Oracle BPEL的研究(3)workflow service api的使用

日期: 2008-07-09 作者:jameshu999 来源:TechTarget中国

  供了的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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐