https://blog.csdn.net/lazy_cpp/article/details/77979634
https://blog.csdn.net/shirdrn/article/details/6274744
1、嵌入子流程
子流程元素<subProcess>內嵌在主流程元素<process>之內,只能在該流程中使用該子流程,外部是無法訪問到的。這種子流程一般作爲局部通用邏輯處理,或者因爲特定業務需要,使得比較複雜的單個主流程設計清晰直觀;
2、調用子流程
首先實現一個流程,在另一個流程中可以調用該流程,通常可以定義一些通用的流程作爲這種調用子流程,供其他多個流程定義複用。這種子流程使用<callActivity>元素來進行調用,間接地嵌入到主流程中,用起來比較方便。
@RestController
@RequestMapping("/subp")
@Api("subp")
public class SubProcessController {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
private static String processDefindKey= "MyFourProcess";
@ApiOperation("啓動實例")
@GetMapping("startProcess")
public void startProcess(){
System.out.println("啓動實例");
Map paramMap = new HashMap<>();
paramMap.put("myname","王小寶");
paramMap.put("flow","3");
runtimeService.startProcessInstanceByKey(processDefindKey,paramMap);
}
@ApiOperation("完成任務")
@GetMapping("submitTaskProcess")
public void submitTaskProcess(){
System.out.println("完成任務");
String taskId = "65041";
taskService.complete(taskId);
}
@ApiOperation("查詢任務")
@GetMapping("queryTask")
public void queryTask(){
System.out.println("查詢任務");
List<Task> taskList = taskService.createTaskQuery().processDefinitionKey(processDefindKey).list();
for (Task task : taskList){
System.out.println("taskId:"+task.getId()+" execId:"+task.getExecutionId()+" 流程實例id:"+task.getProcessInstanceId()+" 任務key:"+task.getTaskDefinitionKey());
}
}
}
是另一個已經發布的流程的key
嵌入子流程和調用子流程的區別:
嵌入子流程,其實還是原來的流程,通過流程定義key能查詢到任務等相關信息
調用子流程:在查詢子流程任務,需要用子流程的key 才能查詢到