供了的java api来满足对workflow service的操作。具体Workflow Services API Reference文档可以从%SOA_Oracle_Home%
oracle bpel process manager提供了的java api来满足对workflow service的操作。具体Workflow Services API Reference文档可以从 %SOA_Oracle_Home%bpeldocsworkflowindex.html查看 编写api操作之前,肯定需要引入相关jar包,至少需要包含如下:
为了便于远程访问process server,还需要将·wf_client_config.xml和wf_config.xml配置文件引入到classpath中。这个文件的原始模板可以从%SOA_Oracle_Home%bpelsystemservicesconfig 目录中获取。此目录中还有其他一些配置文件,后续可能也会用到。 对wf_client_config.xml需要做一些修改,以满足你特定的情况。最主要的修改,是使用正确的用户名和密码,以及那些web service的访问url(主要是机器地址和端口)。以及对ejb模式的rmi声明,一般需要从默认的:
view plaincopy to clipboardprint?
<serverURL>ormi://FOX000/hw_services</serverURL>
变更为: <serverURL>opmn:ormi://FOX000:oc4j_soa/hw_services</serverURL>
(其中oc4j_soa是你自己的oc4j instance的名称)
<serverURL>ormi://FOX000/hw_services</serverURL>
变更为: <serverURL>opmn:ormi://FOX000:oc4j_soa/hw_services</serverURL>
(其中oc4j_soa是你自己的oc4j instance的名称) —————————————————————————————————————— 这种准备工作做完了,接下来就可以使用java api来操作workflow service了。 首先需要获取IWorkflowServiceClient这个最初接口,可以通过SOAP, Remote EJB, Local EJB, Java, WSIF 这几种方式来获取。
view plaincopy to clipboardprint?
//获取client接口
IWorkflowServiceClient client =WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.REMOTE_CLIENT);
//然后获取TaskQueryService,进行任务查询操作:
ITaskQueryService taskQueryService = client.getTaskQueryService();
//获取一个workflow context,主要用于后续验证用户是否有相应的权限
IWorkflowContext ctx = taskQueryService.authenticate(“istone”,”welcome1″,”jazn.com”, null);
//构造查询过滤条件
Predicate subFilter1 = new Predicate(TableConstants.WFTASK_STATE_COLUMN, Predicate.OP_EQ, “ASSIGNED”);
Predicate subFilter2 = new Predicate(TableConstants.WFTASK_ACQUIREDBY_COLUMN, Predicate.OP_EQ, ctx.getUser());
Predicate mainFilter = new Predicate(subFilter1, Predicate.AND, subFilter2 );
//构造查询显示元素
List queryColumns = new ArrayList();
queryColumns.add(TableConstants.WFTASK_TITLE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_PRIORITY_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_STATE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_SUBSTATE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_ACQUIREDBY_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_TASKID_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_TASKNUMBER_COLUMN.getName());
//查询
List<Task> resultSet = taskQueryService.queryTasks(ctx, queryColumns, null, ITaskQueryService.ASSIGNMENT_FILTER_ALL , null, mainFilter , null, 0, 0);
//获取client接口
IWorkflowServiceClient client =WorkflowServiceClientFactory.getWorkflowServiceClient( WorkflowServiceClientFactory.REMOTE_CLIENT);
//然后获取TaskQueryService,进行任务查询操作:
ITaskQueryService taskQueryService = client.getTaskQueryService();
//获取一个workflow context,主要用于后续验证用户是否有相应的权限
IWorkflowContext ctx = taskQueryService.authenticate (“istone”,”welcome1″,”jazn.com”, null);
//构造查询过滤条件
Predicate subFilter1 = new Predicate(TableConstants.WFTASK_STATE_COLUMN, Predicate.OP_EQ, “ASSIGNED”);
Predicate subFilter2 = new Predicate(TableConstants.WFTASK_ACQUIREDBY_COLUMN, Predicate.OP_EQ, ctx.getUser());
Predicate mainFilter = new Predicate(subFilter1, Predicate.AND, subFilter2 );
//构造查询显示元素
List queryColumns = new ArrayList();
queryColumns.add(TableConstants.WFTASK_TITLE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_PRIORITY_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_STATE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_SUBSTATE_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_ACQUIREDBY_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_TASKID_COLUMN.getName());
queryColumns.add(TableConstants.WFTASK_TASKNUMBER_COLUMN.getName());
//查询
List<Task> resultSet = taskQueryService.queryTasks(ctx, queryColumns, null, ITaskQueryService.ASSIGNMENT_FILTER_ALL , null, mainFilter , null, 0, 0);
当然,如上的代码只是很简单的使用api操作。具体有兴趣,可以参考api doc进行。
原文出处:http://gocom.primeton.com/blog11082_16519.htm
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
事件驱动框架和SOA在空军的应用
空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。
-
揭秘New Relic APM技术细节
New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响
-
仅凭SOA和云无法解决业务数据管理风险问题
SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。
-
如何避免云计算与SOA冲突