Activiti并行网关一个实例多个任务
流程图:
并行网关创建后是一个流程多个实例,如果想单个执行每个实例需要单独每个实例的taskId,然后挨个去执行,也可以获取processInstanceId,不过使用这个操作后的assignee会是同一个人,单独去执行可以单独去赋值,这样在act_hi_actinst表中的操作记录中会是不同人,更符合业务。
主要代码:
@Override
public void assginLeaveWorkFlow(Company company) {
Map<String,Object> map = new HashMap<>();
//得到当前实例下的task
//List<Task> list = processEngine.getTaskService().createTaskQuery().taskAssignee(company.getCheckPeople()).list();
//List<Task> list = taskService.createTaskQuery().taskAssignee(company.getCheckPeople()).list();
TaskService taskService = processEngine.getTaskService();
List<Task> list = taskService.createTaskQuery().taskId(company.getProcessInstanceId()).list();
if(list!=null && list.size()>0){
for(Task task1:list){
task1.setAssignee(company.getCheckPeople());
System.out.println("任务ID:"+task1.getId());
System.out.println("任务的办理人:"+task1.getAssignee());
System.out.println("任务名称:"+task1.getName());
System.out.println("任务的创建时间:"+task1.getCreateTime());
System.out.println("流程实例ID:"+task1.getProcessInstanceId());
System.out.println("#######################################");
map.put("checkPeople", company.getCheckPeople());
this.taskService.saveTask(task1);
this.taskService.complete(task1.getId(),map);
}
}