1. 流程图
2. 部署流程定义+启动流程实例+查询流程实例+查询历史流程实例
public void testStart() throws Exception {
InputStream inputStreamBPMN = this.getClass().getResourceAsStream("StartProcess.bpmn");
InputStream inputStreamPNG = this.getClass().getResourceAsStream("StartProcess.png");
// 部署流程定义
processEngine.getRepositoryService()//
.createDeployment()//创建部署对象
.addInputStream("startTest.bpmn", inputStreamBPMN)//添加规则文件
.addInputStream("startTest.png", inputStreamPNG)//添加规则图片
.deploy();//发布流程
// 2启动流程
String processDefinitionKey = "startTest";
ProcessInstance pi = processEngine.getRuntimeService()//
.startProcessInstanceByKey(processDefinitionKey);
System.out.println("pid:"+pi.getId()+",activitiId:"+pi.getActivityId()+",ended:"+pi.isEnded());
String pid = pi.getId();
System.out.println("============================");
//当流程已结束后,流程实例被删除,运行时服务对象不能查询
pi = processEngine.getRuntimeService()//
.createProcessInstanceQuery()//
.processInstanceId(pid)//
.singleResult();
System.out.println("pi:"+pi);
System.out.println("pid:"+pi.getId()+",activitiId:"+pi.getActivityId()+",ended:"+pi.isEnded());
// 可以使用历史的记录查询
HistoricProcessInstance hpi = processEngine.getHistoryService()//
.createHistoricProcessInstanceQuery()//
.processInstanceId(pid)//
.singleResult();
System.out.println("pid:"+hpi.getId());
// 3.使用断言,检测结果,判断流程执行是否和自己想象的一样
System.out.println("流程正常执行!");
}
3. 总结
1):结束节点没有出口
2):其他节点有一个或多个出口。
如果有一个出口,则代表是一个单线流程;
如果有多个出口,则代表是开启并发流程。