2019最新Activiti6.0工作流办理公共任务(组任务)
1.公共任务也成称为组任务,就是当前的任务可以由多个人进行办理,在设置流程图的时候进行设置
2.如何办理公共任务?
可以通过claim()
把公共任务拾取成个人任务,然后通过办理个人任务的形式办理公共任务
3.如果当前的任务已从公共任务拾取成个人任务的时候,还可以通过setAssignee()
将个人任务回退到公共任务
4.流程图:
5.代码
package com.redpig.activiti.taskGroup;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;
import java.util.List;
public class TaskGroupTest {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();//使用默认配置文件
/**
* 部署流程定义(操作数据表:act_re_deployment、act_re_procdef、act_ge_bytearray))
*/
@Test
public void test01() {
//获得一个构建器对象,用于加载流程定义的文件(test01.bpmn,test01.png)完成流程定义的部署
DeploymentBuilder deployment = processEngine.getRepositoryService().createDeployment();
//读取单个流程的定义文件
//加载流程定义的文件
deployment.addClasspathResource("com/redpig/activiti/taskGroup/groupTest.bpmn");
deployment.addClasspathResource("com/redpig/activiti/taskGroup/groupTest.png");
deployment.name("公共任务流程图");
//部署流程定义
Deployment deploy = deployment.deploy();
System.out.println(deploy.getId());
}
/**
* 根据key启动一个实例
*/
@Test
public void test02(){
String processDefinitonkry = "groupTask";//根据流程实例key开启动
ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitonkry);
System.out.println(processInstance.getId());
}
/**
* 办理一下个人任务
*/
@Test
public void test03(){
String taskid = "5002";//根据任务id办理
processEngine.getTaskService().complete(taskid);
}
/**
* 查询公共任务列表
*/
@Test
public void test04(){
TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
//根据候选人过滤
taskQuery.taskCandidateUser("财务2");
List<Task> list = taskQuery.list();
for (Task task : list) {
System.out.println(task.getName());
}
}
/**
* 拾取任务(将公共任务变为个人任务)
*/
@Test
public void test05(){
processEngine.getTaskService().claim("5002","财务2");
}
/**
* 退回任务(将个人任务变为公共任务)
*/
@Test
public void test06(){
processEngine.getTaskService().setAssignee("5002",null);
}
}