1. 程式人生 > >11.activiti工作流-開始活動節點

11.activiti工作流-開始活動節點

流程圖

這裡寫圖片描述

部署流程定義+啟動流程例項+查詢流程例項+查詢歷史流程例項

package i_start;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricProcessInstance;
import
org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; public class StartTest { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /** 部署流程定義(從inputStream) */ @Test public
void deploymentProcessDefinition_inputStream() { InputStream inputStreamBpmn = this.getClass().getResourceAsStream( "start.bpmn"); InputStream inputStreamPng = this.getClass().getResourceAsStream( "start.png"); Deployment deployment = processEngine.getRepositoryService()// 與流程定義和部署物件相關的Service
.createDeployment()// 建立一個部署物件 .name("開始活動")// 新增部署的名稱 .addInputStream("start.bpmn", inputStreamBpmn)// .addInputStream("start.png", inputStreamPng)// .deploy();// 完成部署 System.out.println("部署ID:" + deployment.getId());// System.out.println("部署名稱:" + deployment.getName());// } /** 啟動流程例項 */ @Test public void startProcessInstance() { // 流程定義的key String processDefinitionKey = "start"; ProcessInstance pi = processEngine.getRuntimeService()// 與正在執行的流程例項和執行物件相關的Service .startProcessInstanceByKey(processDefinitionKey);// 使用流程定義的key啟動流程例項,key對應helloworld.bpmn檔案中id的屬性值,使用key值啟動,預設是按照最新版本的流程定義啟動 System.out.println("流程例項ID:" + pi.getId());// 流程例項ID 101 System.out.println("流程定義ID:" + pi.getProcessDefinitionId());// 流程定義ID // helloworld:1:4 /** 判斷流程是否結束,查詢正在執行的執行物件表 */ ProcessInstance rpi=processEngine.getRuntimeService().createProcessInstanceQuery()// .processDefinitionId(pi.getId())// .singleResult(); //說明流程例項結束了 if(rpi==null){ /**查詢歷史,獲取流程的相關資訊*/ HistoricProcessInstance hpi=processEngine.getHistoryService()// .createHistoricProcessInstanceQuery()// .processInstanceId(pi.getId())//使用流程例項id查詢 .singleResult(); System.out.println(hpi.getId()+" "+hpi.getStartTime()+" "+hpi.getEndTime()+" "+hpi.getDurationInMillis()); } } }

總結
1):結束節點沒有出口
2):其他節點有一個或多個出口。
如果有一個出口,則代表是一個單線流程;
如果有多個出口,則代表是開啟併發流程。