上一篇博客我们讲了分配个人任务的三种方式,这篇博客我们来介绍一下分配组任务的三种方式。
一、流程图
图一 分配组任务的三种方式
二、分配组任务方式一:直接指定办理人
1.在任务节点设置办理人
2.测试代码
package cn.gome.m_groupTask;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.junit.Test;
public class TaskTest {
// 流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**部署流程定义+启动流程实例:3905*/
@Test
public void deployementAndStartProcess() {
//1.发布流程
InputStream inputStreamBpmn = this.getClass().getResourceAsStream(
"task.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream(
"task.png");
processEngine.getRepositoryService()//
.createDeployment()//
.addInputStream("task.bpmn", inputStreamBpmn)//
.addInputStream("task.png", inputStreamPng)//
.deploy();
//2.启动流程
ProcessInstance pi = processEngine.getRuntimeService()//
.startProcessInstanceByKey("task");
System.out.println("pid:" + pi.getId());
}
/**查询我的个人任务,没有执行结果*/
@Test
public void findPersonalTaskList() {
// 任务办理人
String assignee = "小A";
List<Task> list = processEngine.getTaskService()//
.createTaskQuery()//
.taskAssignee(assignee)// 个人任务的查询
.list();
if (list != null && list.size() > 0) {
for (Task task : list) {
System.out.println("任务ID:" + task.getId());
System.out.println("任务的办理人:" + task.getAssignee());
System.out.println("任务名称:" + task.getName());
System.out.println("任务的创建时间:" + task.getCreateTime());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
System.out.println("#######################################");
}
}
}
/**查询组任务*/
@Test
public void findGroupTaskList() {
// 任务办理人
String candidateUser = "小A";
List<Task> list = processEngine.getTaskService()//
.createTaskQuery()//
.taskCandidateUser(candidateUser)// 参与者,组任务查询
.list();
if (list != null && list.size() > 0) {
for (Task task : list) {
System.out.println("任务ID:" + task.getId());
System.out.println("任务的办理人:" + task.getAssignee());
System.out.println("任务名称:" + task.getName());
System.out.println("任务的创建时间:" + task.getCreateTime());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
System.out.println("###############################