知识传送门 》》》》》》》》》》》》》》》》》》》
为什么普通人要想成佛就得经过九九八十一难,
而坏人只需要放下屠刀就能立地成佛呢?
一:定义.bpmn文件
子流程用于将主流程中其中一个大的节点进行进一步拆分成多个步骤,这些步骤组成一个完整的小流程,当子流程执行完后才会回到主流程,就像方法调用一样。子流程的作用就是对多个主流程步骤进行分组形成一个整体大的步骤,让流程图的主逻辑看起来主次比较分明,逻辑比较清晰,子流程并没有其它特殊的功能。就像一个方法写1000行代码能实现功能一样,你把这1000行拆分成10个方法也能完成功能,只是拆分后主逻辑比较清晰而已,不拆分会把一些很细节的逻辑混在主逻辑上看起来不太清晰而已。
二:启动并完成第一个任务
@Test
void testStartAndComplete() {
runtimeService.startProcessInstanceByKey("SubProcessExample");
Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
.taskAssignee("zhangsan")
.singleResult();
taskService.complete(task.getId());
}
zhangsan完成任务后进入了子流程的第一个节点(内部审核)。
内嵌子流程启动了一个父流程实例,也启动了一个子流程实例,子流程实例隶属于父流程实例PARENT_ID_。而调用子流程CallActivityTask的SUPER_EXEC_是有值的。
三:完成内部审核
public void testCompleteTask() {
Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
.taskAssignee("lisi")
.singleResult();
taskService.complete(task.getId());
}
五:最终审核
@Test
public void testCompleteTask() {
Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
.taskAssignee("wangwu")
.singleResult();
taskService.complete(task.getId());
}
调用子流程:多个流程之间相互独立,会分别启动多个流程实例。
内嵌子流程:嵌套之流程只能在当前流程中使用,不能被其它流程调用,只启动一个实例。
六:子流程多实例
子流程也可以进行多实例,也就是会签,即会签也可以是单个节点进行会签,也可以是一个子流程(包含多个节点的)一整套流程进行会签。
知识传送门 》》》》》》》》》》》》》》》》》》》