此分组的意思是,该任务节点为多个人员,当其中之一完成后,流程就进入下一个节点。
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");
【JBPM4】任务节点-任务分配candidate-groups,布布扣,bubuko.com
【JBPM4】任务节点-任务分配candidate-groups
原文:http://www.cnblogs.com/surge/p/3577737.html