activiti之3种组任务分配(个人任务和组任务相互转换 添加和删除组任务成员)
第一种
组员直接写死
package cn.et.two.zfprw;
import java.io.InputStream;
import java.util.List;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricIdentityLink;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.junit.Test;
public class Zrwfp {
// 流程引擎对象
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**部署流程定义+启动流程实例:3905*/
@Test
public void deployementAndStartProcess() {
//1.发布流程
InputStream inputStreamBpmn = this.getClass().getResourceAsStream(
"zfprw.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream(
"zfprw.png");
processEngine.getRepositoryService()//
.createDeployment()//
.addInputStream("zfprw.bpmn", inputStreamBpmn)//
.addInputStream("zfprw.png", inputStreamPng)//
.deploy();
//2.启动流程
ProcessInstance pi = processEngine.getRuntimeService()//
.startProcessInstanceByKey("Myzrwfp");
System.out.println("pid:" + pi.getId());
}
/**查询我的个人任务,没有执行结果*/
@Test
public void findPersonalTaskList() {
// 任务办理人
String assignee = "小三";
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 = "小三";
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("#######################################");
}
}
}
/**完成任务*/
@Test
public void completeTask() {
// 任务ID
String taskId = "137508";
processEngine.getTaskService()//
.complete(taskId);
System.out.println("完成任务:" + taskId);
}
/**查询正在执行的任务办理任表 */
@Test
public void findRunPersonTask(){
//任务id
String taskId="xxxx";
TaskService taskService = processEngine.getTaskService();
List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(taskId);
if(identityLinksForTask!=null&&identityLinksForTask.size()>0){
for(IdentityLink i:identityLinksForTask){
System.out.println(i.getTaskId()+" "+i.getType());
}
}
}
/**查询历史任务的办理人 */
public void findHistoryPersonTadk(){
//流程实例id
String processInstanceId="xxx";
HistoryService historyService = processEngine.getHistoryService();
List<HistoricIdentityLink> hi = historyService.getHistoricIdentityLinksForProcessInstance(processInstanceId);
if(hi!=null&&hi.size()>0){
for(HistoricIdentityLink his:hi){
System.out.println(his.getTaskId());
}
}
}
/**查询正在执行的组任务列表*/
@Test
public void findGroupCandidate() {
// 任务ID
String taskId = "137508";
List<IdentityLink> list = processEngine.getTaskService()//
.getIdentityLinksForTask(taskId);
if (list != null && list.size() > 0) {
for (IdentityLink identityLink : list) {
System.out.println("任务ID:" + identityLink.getTaskId());
System.out.println("流程实例ID:"
+ identityLink.getProcessInstanceId());
System.out.println("用户ID:" + identityLink.getUserId());
System.out.println("工作流角色ID:" + identityLink.getGroupId());
System.out.println("#########################################");
}
}
}
/**查询历史的组任务列表*/
@Test
public void findHistoryGroupCandidate() {
// 流程实例ID
String processInstanceId = "137505";
List<HistoricIdentityLink> list = processEngine.getHistoryService()
.getHistoricIdentityLinksForProcessInstance(processInstanceId);
if (list != null && list.size() > 0) {
for (HistoricIdentityLink identityLink : list) {
System.out.println("任务ID:" + identityLink.getTaskId());
System.out.println("流程实例ID:"
+ identityLink.getProcessInstanceId());
System.out.println("用户ID:" + identityLink.getUserId());
System.out.println("工作流角色ID:" + identityLink.getGroupId());
System.out.println("#########################################");
}
}
}
/**
* 将组任务装换成个人任务
*/
@Test
public void claim(){
//指定任务id
String taskId="xxxx";
//指定分配的任
String userId="李晨";
TaskService taskService = processEngine.getTaskService();
taskService.claim(taskId, userId);
}
/**
* 将给人任务回退到组任务 之前这个任务一定是个组任务
*/
@Test
public void setAssigee(){
//任务id
String taskId="xxx";
TaskService taskService = processEngine.getTaskService();
taskService.setAssignee(taskId, null);
/**
* //指定办理任为空 不是组任务就是没有指定办理人
* 此前这个任务已经是个组任务 所以指定null 会回退为组任务
*/
}
/**向组任务中添加成员*/
@Test
public void addGroupUser(){
//任务ID
String taskId = "xxx";
//新增组任务的成员
String userId = "如来";
processEngine.getTaskService()//
.addCandidateUser(taskId, userId);
}
/**向组任务中删除成员*/
@Test
public void deleteGroupUser(){
//任务ID
String taskId = "xxx";
//新增组任务的成员
String userId = "猪八戒";
processEngine.getTaskService()//
.deleteCandidateUser(taskId, userId);
}
}
后面两种可以按照个人任务的方式来 https://blog.****.net/panhaigang123/article/details/85028819