• Activiti——组任务


    1.组任务

                同一个任务,一组人都可以查看,其中只有一个人可以申请到该任务进行处理(其他人员看不到该任务),如果过程中不想处理了,
                可以将任务退回,这样组内其他人员可再次看到该任务,进行任务申请
                
                在流程图当中,每一个任务环节都有一个Candidate users任务候选人属性,在此属性内,指定执行该任务的一组人,每一个人用 "," 号分割


              

    流程部署

    启动流程实例

    2.组任务代办任务流程:

      2.1 查询组任务,但是不能执行

      

    复制代码
        /**
         * 查询组任务
         */
        @Test
        public void getGroupTask() {
            //获取ProcessEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取TaskService对象
            TaskService taskService = processEngine.getTaskService();
            //查询组任务
            List<Task> list = taskService.createTaskQuery().processDefinitionKey("holidayGroup").taskCandidateUser("lisi").list();
            for (Task task : list) {
                System.out.println("任务ID:" + task.getId());
                //如果当前不是此任务处理人则处理不了该任务
                /*taskService.complete(task.getId());*/
                System.out.println("任务名称:" + task.getName());
                System.out.println("任务处理人:" + task.getAssignee());    //Null代表 没有处理人说明当前任务没有人拾取
            }
        }
    复制代码

    没有人拾取时的执行效果:



      2.2 拾取(claim)任务

      一旦其中一个人拾取了任务,其他人就看不到该任务了

    复制代码
        /**
         * 拾取任务
         */
        @Test
        public void claimTask() {
            //获取ProcessEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取TaskService对象
            TaskService taskService = processEngine.getTaskService();
            //获取组任务
            String candidateUser="huaixin";
            Task task = taskService.createTaskQuery().processDefinitionKey("holidayGroup").taskCandidateUser(candidateUser).singleResult();
            //不等于Null代表能够获取到该任务
            if(task!=null){
                //拾取任务   任务ID,任务执行人
                taskService.claim(task.getId(),candidateUser);
                System.out.println("任务被:"+candidateUser+"拾取~");
            }
        }
    复制代码

     

     说明:即使该用户不是候选人也能拾取,建议拾取时校验是否有资格组任务拾取后,该任务已有负责人,通过候选人将查询不到该任务

      2.3 查询个人任务并执行

    复制代码
        /**
         * 查看任务
         */
        @Test
        public void getTask() {
            //获取ProcessEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取TaskService对象
            TaskService taskService = processEngine.getTaskService();
            //查询到自己的任务,然后通过任务ID进行提交
            Task task = taskService.createTaskQuery().processDefinitionKey("holidayGroup").taskAssignee("huaixin").singleResult();
            //处理任务
            if(task!=null){
                taskService.complete(task.getId());
                System.out.println("任务处理完毕");
            }
        }
    复制代码

     

      2.4 任务退回/交接

        如果个人不想办理该组任务,可以归还组任务,归还后该用户不再是该任务的负责人

    复制代码
       /**
         * 任务退回/交接
         */
        @Test
        public void taskReturn(){
            //获取ProcessEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取TaskService对象
            TaskService taskService = processEngine.getTaskService();
            //查询到自己的任务,然后通过任务ID进行提交
            Task task = taskService.createTaskQuery().processDefinitionKey("holidayGroup").taskAssignee("huaixin").singleResult();
    
            if(task!=null){
                //任务退回  任务ID    null代表没有处理人执行,需要后续再次拾取任务
                //任务交接 任务ID     如果第二个参数,处理人不为空代表将该任务交给次处理人
                taskService.setAssignee(task.getId(),null);
                System.out.println("任务退回");
                /*taskService.setAssignee(task.getId(),"lisi");
                System.out.println("任务交接");*/
            }
        }
    复制代码

         退回后再次查询组任务,执行人就都可以看到此任务了

    说明:建议归还任务前校验该用户是否是该任务的负责人

    也可以通过setAssignee   方法将任务委托给其它用户负责,注意被委托的用户可以不是候选人(建议不要这样使用)

  • 相关阅读:
    redis全量复制和部分复制
    tp5怎么使用find_in_set
    ms1
    nginx+php上传大文件配置
    培训第一天!
    PHP中使用CURL(五)
    PHP中使用CURL(四)
    PHP中使用CURL(三)
    PHP中使用CURL(二)
    PHP中使用CURL(一)
  • 原文地址:https://www.cnblogs.com/chx9832/p/12652998.html
Copyright © 2020-2023  润新知