欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

10组任务,

来源: javaer 分享于  点击 40996 次 点评:61

10组任务,


流程中的某个任务由指定的group来完成,其中group由多个user组成。

一、直接指定办理组

1、流程图

 

 

 

2、部署和启动流程

    //部署流程     @Test     public void bushu() {         InputStream inputStream = this.getClass().getResourceAsStream("GroupTask.zip");         ZipInputStream zipInputStream = new ZipInputStream(inputStream);         RepositoryService repositoryService = processEngine.getRepositoryService();         Deployment deploy = repositoryService.createDeployment().name("请假流程")                 .addZipInputStream(zipInputStream).deploy();         System.out.println("部署成功:部署ID"+deploy.getId());     }          //启动流程     @Test     public void startProcess() {         RuntimeService runtimeService = processEngine.getRuntimeService();         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess");         System.out.println("流程启动成功,流程实例ID为:"+processInstance.getId());     } 流程启动之后,任务表中的办理人为空,存放流程办理人的信息表中有八条数据,每个人既是参与者,又是申请者:  

 

 

 

3、查询组任务

此处的张三,可以是李四,王五或者赵六,得到的结果一样,每个人都可以看到此任务。 //查询组任务     @Test     public void findGroupTask() {         TaskService taskService = this.processEngine.getTaskService();         List<Task> list = taskService.createTaskQuery().taskCandidateUser("张三").list();         if (null != list && list.size() > 0) {             for (Task task : list) {                 System.out.println("任务ID:" + task.getId());             }         }     }

4、任务拾取

任务拾取后组任务变成个人任务。  //任务拾取     @Test     public void claim() {         String taskId="2504";         TaskService taskService = this.processEngine.getTaskService();         taskService.claim(taskId, "张三");         System.out.println("任务拾取成功");     }

5、任务回退(设置办理人为空)

 // 任务回退     @Test     public void claimBack() {         String taskId="2504";         TaskService taskService = this.processEngine.getTaskService();         taskService.setAssignee(taskId, null);         System.out.println("任务回退成功");     } 在实际开发中:由主任务办理人去设置组任务的办理人,设置时应将组任务办理人查出进行选择。目的就是让组任务变成个人任务。

6、查询组任务成员列表

 // 查询组任务成员列表     @Test     public void findGroupUser(){         String taskId = "2504";         List<IdentityLink> list = processEngine.getTaskService()//                         .getIdentityLinksForTask(taskId);          //List<IdentityLink> list = processEngine.getRuntimeService()//         //                .getIdentityLinksForProcessInstance(instanceId);         for(IdentityLink identityLink:list ){             System.out.println("userId="+identityLink.getUserId());             System.out.println("taskId="+identityLink.getTaskId());             System.out.println("piId="+identityLink.getProcessInstanceId());             System.out.println("TYPE="+identityLink.getType());             System.out.println("######################");         }     }

 

 

二、使用流程变量指定办理组

1、流程图

 

 

 

2、在启动时设置办理人

//启动流程     @Test     public void startProcess() {         RuntimeService runtimeService = this.processEngine.getRuntimeService();         String processDefinitionKey = "myProcess";         Map<String,Object> variables=new HashMap<>();         variables.put("usernames", "张三,李四,王五,赵六");         runtimeService.startProcessInstanceByKey(processDefinitionKey,variables);         System.out.println("流程启动成功");     }

三、使用监听器指定办理组

指定步骤与个人任务指定一致。

四、总结

组任务及三种分配方式,

    1,在taskProcess.bpmn中直接写 candidate-users=“小A,小B,小C,小D"

    2,在taskProcess.bpmn中写 candidate-users =“#{userIDs}”,变量的值要是String的。

         使用流程变量指定办理人

              Map<String, Object> variables = new HashMap<String, Object>();

              variables.put("userIDs", "大大,小小,中中");

    3,使用TaskListener接口,使用类实现该接口,在类中定义,

            //添加组任务的用户

delegateTask.addCandidateUser(userId1);

delegateTask.addCandidateUser(userId2);

组任务分配给个人任务(认领任务),

     processEngine.getTaskService().claim(taskId, userId);

个人任务分配给组任务,

     processEngine.getTaskService(). setAssignee(taskId, null);

向组任务添加人员,

     processEngine.getTaskService().addCandidateUser(taskId, userId);

向组任务删除人员,

     processEngine.getTaskService().deleteCandidateUser(taskId, userId);

个人任务和组任务存放办理人对应的表,

act_ru_identitylink表存放任务的办理人,包括个人任务和组任务,表示正在执行的任务

act_hi_identitylink表存放任务的办理人,包括个人任务和组任务,表示历史任务

区别在于,如果是个人任务TYPE的类型表示participant(参与者)

                   如果是组任务TYPE的类型表示candidate(候选者)和participant(参与者)

相关文章

    暂无相关文章
相关栏目:

用户点评