repositoryService.createDeployment().name("内嵌子流程").addClasspathResource("bpmn/embed_sub_process.bpmn").deploy();
identityService.setAuthenticatedUserId("huihui");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("EmbedSubProcess");
Task task = taskService.createTaskQuery() .processInstanceId(processInstance.getId()).singleResult();
taskService.complete(task.getId());
ACT_HI_TASKINST:上传vlog节点已经审批完成
ACT_RU_TASK:进入子流程,路由网关为并行网关,所以同时出现3个任务。
ACT_RU_EXECUTION
List<Task> list = taskService.createTaskQuery().processInstanceId("097a8235-b080-11ee-982f-92e97825df95").list();
for (Task task : list) {
taskService.complete(task.getId());
}
ACT_RU_EXECUTION:数据变成了一条,活动来到上传成功。
当任务为外部任务时可以设置任务的优先级,默认为50,假如“批量上传vlog”上传10个,如果没有设置优先级即都为50,当第一次循环进入“排队检查”,后面可能执行后面的校验节点,而第二轮循环如果第二轮的“排队检查”没有执行,那么第二轮的后面检查节点也得不到执行的机会,所以我们循环10轮,尽可能先将10轮中的“排队检查”优先执行完,这样会生成10*3的检查节点,这样节点就可以并发去执行,这样就减少了不必要的等待时间。
多实例,节点执行有先后,尽可能提高前面节点的优先级,保证前面节点优先执行。
repositoryService.createDeployment().name("多实例内嵌子流程").addClasspathResource("bpmn/embed_sub_process_multi.bpmn").deploy();
identityService.setAuthenticatedUserId("huihui");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("EmbedSubProcessMulti");
Task task = taskService.createTaskQuery() .processInstanceId(processInstance.getId()).singleResult();
VariableMap variables = Variables.createVariables().putValue("fileList", Arrays.asList("a.mp4", "b.rmvb"));
taskService.complete(task.getId(), variables);
camunda:
bpm:
client:
base-url: http://localhost:8080/engine-rest
# 一次拉取10个任务,提高并发效率
max-tasks: 10
<dependency>
<groupId>org.codehaus.groovygroupId>
<artifactId>groovy-allartifactId>
<version>3.0.9version>
<type>pomtype>
dependency>
<dependency>
<groupId>org.codehaus.groovy.modules.http-buildergroupId>
<artifactId>http-builderartifactId>
<version>0.7.1version>
dependency>
repositoryService.createDeployment().name("调用流程").addClasspathResource("bpmn/main_process.bpmn").deploy();
identityService.setAuthenticatedUserId("huihui");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("MainProcess");
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
VariableMap variables = Variables.createVariables().putValue("sourcePath", "xxx.rmvb");
taskService.complete(task.getId(), variables);
ACT_RU_EXECUTION:
List<Task> list = taskService.createTaskQuery().processInstanceId("719d2260-b08b-11ee-8cfc-92e97825df95").list();
for (Task task : list) {
taskService.complete(task.getId());
}