一 组任务(公共任务)流程图(group)
二 源码
个人任务:由某一个负责办理,在任务表中通过assignee字段记录
公共任务:可以由多个人办理, 可以在设计流程图时指定多个办理人
/**
* 公共任务测试
* @author zhaoqx
*
*/
public class GroupTaskTest {
ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void test1() {
DeploymentBuilder deploymentBuilder = pe.getRepositoryService()
.createDeployment();
deploymentBuilder
.addClasspathResource("cn/task/group/groupTask.bpmn");
deploymentBuilder .addClasspathResource("cn/task/group/groupTask.png");
Deployment deployment = deploymentBuilder.deploy();
}
/**
* 启动流程实例
*/
@Test
public void test2(){
String processDefinitionId = "grouptTask:1:1404";
pe.getRuntimeService().startProcessInstanceById(processDefinitionId);
}
/**
* 办理个人任务
*/
@Test
public void test3(){
String taskId = "1602";
pe.getTaskService().complete(taskId);
}
/**
* 查询公共任务列表
*/
@Test
public void test4(){
TaskQuery query = pe.getTaskService().createTaskQuery();
String candidateUser = "李四";
//根据候选人过滤
query.taskCandidateUser(candidateUser);
List<Task> list = query.list();
for (Task task : list) {
System.out.println(task.getName());
}
}
/**
* 拾取任务(将公共任务变为个人任务)
*/
@Test
public void test5(){
String taskId = "1602";
String userId = "王五";
pe.getTaskService().claim(taskId , userId);
}
/**
* 退回任务(将个人任务变为公共任务)
*/
@Test
public void test6(){
String taskId = "1602";
pe.getTaskService().setAssignee(taskId , null);
}
}
三.接受任务
接收任务不是由某个人负责办理,通过signal方法让流程执行的
四.源码
/**
* 接收任务测试
* @author zhaoqx
*
*/
public class ReceiveTaskTest {
ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void test1() {
DeploymentBuilder deploymentBuilder = pe.getRepositoryService()
.createDeployment();
deploymentBuilder
.addClasspathResource("cn/task/receive/receiveTask.bpmn");
deploymentBuilder
.addClasspathResource("cn/task/receive/receiveTask.png");
Deployment deployment = deploymentBuilder.deploy();
}
/**
* 启动流程实例
*/
@Test
public void test2(){
String processDefinitionId = "receiveTask:1:2004";
pe.getRuntimeService().startProcessInstanceById(processDefinitionId );
}
/**
* 办理任务
*/
@Test
public void test3(){
String taskId = "2104";
pe.getTaskService().complete(taskId );
}
/**
* 处理接收任务
*/
@Test
public void test4(){
String executionId = "2101";
pe.getRuntimeService().signal(executionId );
}
}
•分配组任务总结
•组任务分配给个人任务(认领任务):
processEngine.getTaskService().claim(taskId, userId);
•个人任务分配给组任务:
processEngine.getTaskService(). setAssignee(taskId, null);
•向组任务添加人员:
processEngine.getTaskService().addCandidateUser(taskId, userId);
•向组任务删除人员:
processEngine.getTaskService().deleteCandidateUser(taskId, userId);