Java远程调用BPS流程实现流程运行简单示例

来源:互联网 发布:使徒行者2 知乎 编辑:程序博客网 时间:2024/06/05 21:24

简介:略

2、背景:略

3、目的:自我学习笔记

4、实现过程

(1)、画出流程图 如下:



路由活动分支下的条件语句为复杂表达式:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ((account<200&&divisionresult.equals("1"))||(account>=200&&account<1000&&directorateresult.equals("1"))||(account>=1000&&VCresult.equals("1")&&directorateresult.equals("1")))  

(2)发布流程

(3)在eclipse中新建Java项目,引入BPS client 端依赖的jar包, 这些jar包可以在:

http://product.primeton.com/download/attachments/14911104/Primeton_BPS_7.5_API_Libraries.zip  下载,

下载后解压,右键项目选择properties,然后将3rd 和bps 两个文件夹下的jar包导入新建的remotebpsclient工程。

 (4)创建包含main方法的类BPSClient(注意要有包名),在src目录下创建uddi-address.xml。

uddi-address.xml:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <uddi__address__list>    
  4.   <uddi__address id="default">  
  5.     <name>localserver</name>  
  6.     <logicName>default</logicName>  
  7.     <type>remote</type>  
  8.     <description>uddi-config.xml at " Work Space"</description>  
  9.     <uddiHost>127.0.0.1</uddiHost>  
  10.     <uddiPort>8080</uddiPort>  
  11.     <uddiWebContext>default</uddiWebContext>  
  12.     <uddiUserID>bps</uddiUserID>  
  13.     <uddiPassword>000000</uddiPassword>  
  14.     <uddiAdminPort>6200</uddiAdminPort>  
  15.   </uddi__address>  
  16. </uddi__address__list>  

BPSClient中代码:
(注意:客户端代码执行前必须确保流程定义正确、已经提交流程、已经启动BPS服务器端)

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.bps.test;  
  2.   
  3. import java.util.*;  
  4.   
  5. import com.eos.workflow.api.BPSServiceClientFactory;  
  6. import com.eos.workflow.api.IBPSServiceClient;  
  7. import com.eos.workflow.api.IWFWorkItemManager;  
  8. import com.eos.workflow.data.WFWorkItem;  
  9. import com.primeton.workflow.api.WFReasonableException;  
  10. import com.primeton.workflow.api.WFServiceException;  
  11.   
  12. public class BPSClient {  
  13.   
  14.     public static void main(String[] args) throws WFServiceException, WFReasonableException {  
  15.           
  16.         BPSServiceClientFactory.getLoginManager().setCurrentUser("1001""tiger");  
  17.         IBPSServiceClient client = BPSServiceClientFactory.getDefaultClient();  
  18.         IWFWorkItemManager workItemManager = client.getWorkItemManager();  
  19.           
  20.         //创建流程  
  21.         long  id =client.getProcessInstManager().  
  22.                 createAndStartProcessInstance("com.primeton.test3.newworkflow",  
  23.                                               "Process A","Process A");             
  24.         System.out.println("流程实例ID为:"+id);  
  25.           
  26.         //项目申请 资金为10W  
  27.         List<WFWorkItem> workItemList =workItemManager.queryNextWorkItemsByProcessInstID(id, false);  
  28.         WFWorkItem item = workItemList.get(0);  
  29.         Map<String,Object> map = new Hashtable<String,Object>();  
  30.         map.put("applicant""tiger");  
  31.         map.put("projectname""buybook");  
  32.         map.put("account",10);  
  33.         workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false);  
  34.           
  35.         //事业部经理审核通过  
  36.         BPSServiceClientFactory.getLoginManager().setCurrentUser("1001""tiger");  
  37.         workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);  
  38.         item = workItemList.get(0);  
  39.         map = new Hashtable<String,Object>();  
  40.         map.put("divisionresult",1);  
  41.         workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false);  
  42.   
  43.         //立项并结束  
  44.         BPSServiceClientFactory.getLoginManager().setCurrentUser("1001""tiger");  
  45.         workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);  
  46.         item = workItemList.get(0);  
  47.         workItemManager.finishWorkItem(item.getWorkItemID(), false);  
  48.           
  49.   
  50.     }  
  51.   
  52. }  

(5)运行结果:




0
0 0
原创粉丝点击