此分组的意思是,该任务节点为多个人员,当其中之一完成后,流程就进入下一个节点。
JPDL <?xml version="1.0" encoding="UTF-8"?><process key="task" name="task" xmlns="http://jbpm.org/4.4/jpdl"> <start name="start1" g="243,29,48,48"> <transition name="提交到任务A" to="任务A" g="-63,-11"/> </start> <end name="end1" g="243,393,48,48"/> <task candidate-groups="mgr" name="任务A" g="224,115,92,52"> <transition name="提交到任务B" to="任务B" g="-77,-11"/> </task> <task name="任务B" g="220,221,92,52"> <transition name="提交到任务C" to="任务C" g="-83,-14"/> </task> <task name="任务C" g="224,308,92,52"> <transition name="通过" to="end1" g="-62,-25"/> </task></process>
部署流程
//创建用户组 String group = identityService.createGroup("mgr"); identityService.createUser("a1", "tom", "uu"); identityService.createUser("a2", "tom2", "uu2"); identityService.createMembership("a1", group); identityService.createMembership("a2", group); repositoryService.createDeployment().addResourceFromClasspath("com/tgb/node/task/Candidate/task3.jpdl.xml").deploy();创建流程实例
ProcessInstance processInstance = executionService.startProcessInstanceByKey("task");
print("流程实例ID",processInstance.getId());获取当前节点名称
String name = executionService.createProcessInstanceQuery().processInstanceId("task.480001").uniqueResult().findActiveActivityNames().toString(); print("当前节点名词:",name); 获取任务列表(分配任务后,就可以查询任务数量)要想执行该任务,需要事先把任务交给a1处理,然后再完成处理,否则通过findPersonalTasks时拿不到任务的。
//把任务分配给a1 taskService.takeTask("480002", "a1"); List<Task> tasks = taskService.findPersonalTasks("a1"); print("任务数量",tasks.size()); print("任务名词",tasks.get(0).getActivityName()); print("任务ID",tasks.get(0).getId());获取任务列表(获取任务组任务列表)
通过findGroupTasks可以拿到组任务。可以显示在每个收到此任务的人的代办任务列表中。
List<Task> tasks = taskService.findGroupTasks("a1");
print("任务数量",tasks.size()); print("任务名词",tasks.get(0).getActivityName()); print("任务ID",tasks.get(0).getId());完成任务
taskService.completeTask("390001");