1. 程式人生 > >Java遠端呼叫BPS流程實現流程執行簡單示例

Java遠端呼叫BPS流程實現流程執行簡單示例

1、簡介:略

2、背景:略

3、目的:自我學習筆記

4、實現過程

(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包可以在:

下載後解壓,右鍵專案選擇properties,然後將3rd 和bps 兩個資料夾下的jar包匯入新建的remotebpsclient工程。

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

uddi-address.xml:

<?xml version="1.0" encoding="UTF-8"?>

<uddi__address__list>  
  <uddi__address id="default">
    <name>localserver</name>
    <logicName>default</logicName>
    <type>remote</type>
    <description>uddi-config.xml at " Work Space"</description>
    <uddiHost>127.0.0.1</uddiHost>
    <uddiPort>8080</uddiPort>
    <uddiWebContext>default</uddiWebContext>
    <uddiUserID>bps</uddiUserID>
    <uddiPassword>000000</uddiPassword>
    <uddiAdminPort>6200</uddiAdminPort>
  </uddi__address>
</uddi__address__list>

BPSClient中程式碼:
package com.bps.test;

import java.util.*;

import com.eos.workflow.api.BPSServiceClientFactory;
import com.eos.workflow.api.IBPSServiceClient;
import com.eos.workflow.api.IWFWorkItemManager;
import com.eos.workflow.data.WFWorkItem;
import com.primeton.workflow.api.WFReasonableException;
import com.primeton.workflow.api.WFServiceException;

public class BPSClient {

	public static void main(String[] args) throws WFServiceException, WFReasonableException {
		
		BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
		IBPSServiceClient client = BPSServiceClientFactory.getDefaultClient();
		IWFWorkItemManager workItemManager = client.getWorkItemManager();
		
		//建立流程
		long  id =client.getProcessInstManager().
				createAndStartProcessInstance("com.primeton.test3.newworkflow",
						                      "Process A","Process A");           
		System.out.println("流程例項ID為:"+id);
		
		//專案申請 資金為10W
		List<WFWorkItem> workItemList =workItemManager.queryNextWorkItemsByProcessInstID(id, false);
		WFWorkItem item = workItemList.get(0);
		Map<String,Object> map = new Hashtable<String,Object>();
		map.put("applicant", "tiger");
		map.put("projectname", "buybook");
		map.put("account",10);
		workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false);
		
		//事業部經理稽核通過
		BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
		workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);
		item = workItemList.get(0);
		map = new Hashtable<String,Object>();
		map.put("divisionresult",1);
		workItemManager.finishWorkItemWithRelativeData(item.getWorkItemID(), map, false);

		//立項並結束
		BPSServiceClientFactory.getLoginManager().setCurrentUser("1001", "tiger");
		workItemList =workItemManager.queryNextWorkItemsByWorkItemID(item.getWorkItemID(), false);
		item = workItemList.get(0);
		workItemManager.finishWorkItem(item.getWorkItemID(), false);
		

	}

}

(5)執行結果: