2019最新Activiti6.0工作流办理公共任务(组任务)

1.公共任务也成称为组任务,就是当前的任务可以由多个人进行办理,在设置流程图的时候进行设置
2.如何办理公共任务?
  可以通过claim()把公共任务拾取成个人任务,然后通过办理个人任务的形式办理公共任务
3.如果当前的任务已从公共任务拾取成个人任务的时候,还可以通过setAssignee()将个人任务回退到公共任务

4.流程图:
2019最新Activiti6.0工作流办理公共任务(组任务)
2019最新Activiti6.0工作流办理公共任务(组任务)
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);
}

}