Activit并行网关

Activiti并行网关一个实例多个任务

流程图:
Activit并行网关_第1张图片
并行网关创建后是一个流程多个实例,如果想单个执行每个实例需要单独每个实例的taskId,然后挨个去执行,也可以获取processInstanceId,不过使用这个操作后的assignee会是同一个人,单独去执行可以单独去赋值,这样在act_hi_actinst表中的操作记录中会是不同人,更符合业务。
Activit并行网关_第2张图片主要代码:

@Override
    public void assginLeaveWorkFlow(Company company) {
        Map<String,Object> map = new HashMap<>();
        //得到当前实例下的task
        //List list = processEngine.getTaskService().createTaskQuery().taskAssignee(company.getCheckPeople()).list();
        //List 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);
            }
     }

你可能感兴趣的:(Activit日常记录,activiti)