轻松实现activiti会签(多人处理完成才进入下一节点)

activiti会签 提示:此为在bpmn流程图中设置会签

  • 前言
  • 一、bpmn设置
  • 二、代码实现

提示:此为在bpmn流程图中设置会签


前言

会签就是多人处理完成过后才进入下一节点,下一级节点处理人仅处理一次任务


一、bpmn设置

轻松实现activiti会签(多人处理完成才进入下一节点)_第1张图片

示例:${nrOfCompletedInstances/nrOfInstances==1} ==1表示所有任务实例完成才可以进入下一个节点 (==0.75则需要完成3/4) 以此类推

二、代码实现

 
 @RequestMapping("confirmNodeProcessEmployee")
    public void confirmNodeProcessEmployee() {

        //根据bpmn文件部署流程    
        repositoryService.createDeployment().addClasspathResource("processes/test.bpmn").deploy();
        // 设置多个处理人变量 这里设置了三个人
        Map<String, Object> map= new HashMap<>();
        List<String> manageList= new ArrayList<>();
        manageList.add("zhangsan");
        manageList .add("lisi");
        manageList.add("wangwu");
        map.put("manageList", manageList); //map中的key为流程图中的Collection设置的值
        //采用key来启动流程定义并设置流程变量,返回流程实例
        ProcessInstance pi = runtimeService.startProcessInstanceByKey("test", map);
        String processId = pi.getId();
        System.out.println("流程创建成功,当前流程实例ID:"+processId);
        // 查看zhangsan的任务
        List<Task> list = taskService.createTaskQuery().taskAssignee("zhangsan").list();
        if(list!=null && list.size()>0){
            for(Task task:list){
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务的办理人:"+task.getAssignee());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
            }
        }
        // 查看lisi的任务
        List<Task> list2 = taskService.createTaskQuery().taskAssignee("lisi").list();
        if(list2!=null && list2.size()>0){
            for(Task task:list2){
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务的办理人:"+task.getAssignee());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
            }
        }
        // 查看wangwu的任务
        List<Task> list3 = taskService.createTaskQuery().taskAssignee("wangwu").list();
        if(list3!=null && list3.size()>0){
            for(Task task:list3){
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务的办理人:"+task.getAssignee());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
            }
        }
        
    }
    /**
     *  查询全部流程任务
     * @date 2020/9/10 11:22
     **/
    @GetMapping("/query")
    public WebResult findAllProcessTask() {
          List<Task> taskList = taskService.createTaskQuery().list();
        List<ActRuTask> actRuTaskList = taskList.stream().map(task -> {
            ActRuTask ruTask = new ActRuTask();
            BeanUtils.copyProperties(task,ruTask);
            return ruTask;
        }).collect(Collectors.toList());
        for (ActRuTask task : allProcessTask) {
            System.out.println("流程实例ID:" + task.getProcessInstanceId());
            System.out.println("任务ID:" + task.getId());  //5002
            System.out.println("任务负责人:" + task.getAssignee());
            System.out.println("任务名称:" + task.getName());
        }
        return WebResult.success().withData(allProcessTask);
    }

你可能感兴趣的:(activiti,activiti,java)