JBPM4入門——6.流程例項的建立和執行
阿新 • • 發佈:2019-02-10
package com.test.test; import java.util.Iterator; import java.util.List; import org.jbpm.api.ProcessDefinition; import org.jbpm.api.ProcessDefinitionQuery; import org.jbpm.api.ProcessInstance; import com.test.util.JbpmUtil; public class Test { /** * 流程定義的釋出 * @param jpdlFileName 流程定義的檔名。例如:hello.jpdl.xml */ public void deploy(String jpdlFileName){ JbpmUtil.getRepositoryService() .createDeployment() .addResourceFromClasspath(jpdlFileName) .deploy(); } /** * 流程定義的查詢 */ public void query(){ ProcessDefinitionQuery query = JbpmUtil.getRepositoryService().createProcessDefinitionQuery(); List<ProcessDefinition> list = query.list(); for (Iterator iterator = list.iterator(); iterator.hasNext();) { ProcessDefinition processDefinition = (ProcessDefinition) iterator .next(); /** * id:流程定義的id * key:就是流程定義的檔名稱 、相同的key下面有不同的id * deploymentId:表達的是這次動作釋出的時候資料庫中儲存的那條記錄的主鍵id */ System.out.println("id:"+processDefinition.getId()); System.out.println("key:"+processDefinition.getKey()); System.out.println("deploymentId:"+processDefinition.getDeploymentId()); } } /** * 流程定義的刪除 * @param deploymentId */ public void del(String deploymentId){ //deleteDeploymentCascade 級聯刪除:刪除流程定義的時候把流程例項也刪了.. JbpmUtil.getRepositoryService().deleteDeploymentCascade(deploymentId); } /** * 建立流程例項 * @param key 流程定義的key * @return 返回建立的流程例項 */ public ProcessInstance createInstance(String key){ //雖然說多個例項的key相同。但是startProcessInstanceByKey通過key來啟動的話會預設找到最新版本的流程定義、並建立相應的流程例項 return JbpmUtil.getExecutionService().startProcessInstanceByKey(key); } /** * 執行流程例項 :只按線條的順序執行 * @param processInstanceId * @return */ public ProcessInstance execute(String processInstanceId){ return JbpmUtil.getExecutionService().signalExecutionById(processInstanceId); } /** * 執行流程例項2:通過transition 指向的路徑根據名字執行(to state1 to state2 to end1......) * @param processInstanceId * @return */ public ProcessInstance execute(String processInstanceId,String transitionName){ return JbpmUtil.getExecutionService().signalExecutionById(processInstanceId,transitionName); } public static void main(String[] args) { Test test = new Test(); // test.deploy("hello.jpdl.xml");//流程定義的釋出 test.deploy("simple2.jpdl.xml");//流程定義的釋出 // test.query();//流程定義的查詢 // test.del("10001");//刪除流程定義 test.createInstance("simple2");//建立流程例項 // test.execute("simple.70001");//執行流程例項 // test.execute("simple.70001","to end1");//執行流程例項 } }