//当流程执行完成后,以下表的数据会清空,历史表会添加这些数据
// -- 运行时流程执行实例
// select * from act_ru_execution;
// -- 运行时参与人员与节点关系表
// select * from act_ru_identitylink;
// -- 运行时任务节点表
// select * from act_ru_task;
// -- 运行是任务参数表
// SELECT * from act_ru_variable;
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="myProcess_task_claim" name="processName" isExecutable="true">
<startEvent id="starteventId" name="开始"></startEvent>
<userTask id="usertaskId" name="usertaskName"
activiti:candidateUsers="bajie,wukong,xiaoMing"></userTask>
<endEvent id="endeventId" name="End"></endEvent>
<sequenceFlow sourceRef="starteventId" targetRef="usertaskId"/>
<sequenceFlow sourceRef="usertaskId" targetRef="endeventId"/>
</process>
</definitions>
查询我的拾取任务,activiti7与activiti6以前不同
activiti7这样写是会报错的,因为activit7加入了安全框架
/**
* 拾取任务
* 候选人:谁先拾取这个任务,谁就是任务执行人/代理人
*/
@Test
public void claimTask(){
//查询我的拾取任务,activiti6以前这样写是没有问题的,
// activiti7这样写是会报错的,因为activit7加入了安全框架
// Task task = taskService.createTaskQuery()
// .taskCandidateUser("bajie").singleResult();
// System.out.println(task);
}
拾取任务
/**
* 拾取任务
* 候选人:谁先拾取这个任务,谁就是任务执行人/代理人
*/
@Test
public void claimTask(){
//根据taskId拾取任务
String userId="bajie";
Task task = taskService.createTaskQuery().taskId("d163c7c0-2111-11eb-8532-603a7c6bd5e8").singleResult();
taskService.claim(task.getId(),userId);
System.out.println(userId + "任务拾取成功!!");
}
归还任务与交办任务
/**
* 归还任务与交办任务
* 如果我拾取了,后来我有不想做了,就可以用归还任务
*/
public void unClaimTask(){
Task task = taskService.createTaskQuery().taskId("d163c7c0-2111-11eb-8532-603a7c6bd5e8").singleResult();
//将执行人设置为null,就相当于归还了
//taskService.setAssignee(task.getId(),null); //归还任务
taskService.setAssignee(task.getId(),"wukong"); //交办任务
}
整体java源码
package com.torey.activiti7_workflow;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class Part4_Task {
@Autowired
private TaskService taskService;
/**
* 当流程实例创建了之后,就会有任务节点
* 所有任务查询,一般管理员用
*/
@Test
public void getTask(){
List<Task> list = taskService.createTaskQuery().list();
for (Task task : list) {
System.out.println(":"+task.getId());
System.out.println("taskName:"+task.getName());
System.out.println("执行人:"+task.getAssignee());
}
}
/**
* 查询我的代办任务
*/
@Test
public void getTaskByAssignee(){
List<Task> taskList = taskService.createTaskQuery()
.taskAssignee("wuKong").list();
for (Task task : taskList) {
System.out.println("id:"+task.getId());
System.out.println("taskName:"+task.getName());
System.out.println("执行人:"+task.getAssignee());
}
}
/**
* 执行任务
*/
@Test
public void completeTask(){
String assignee="wuKong";
List<Task> taskList = taskService.createTaskQuery()
.taskAssignee(assignee).list();
if (null==taskList ||taskList.size()==0) {
System.out.println("不存在该执行人" + assignee);
return;
}
System.out.println(assignee+"的任务有"+taskList.size()+"个");
for (Task task : taskList) {
taskService.complete(task.getId());
}
taskList = taskService.createTaskQuery()
.taskAssignee(assignee).list();
System.out.println(assignee+"的任务执行完成,任务有"+taskList.size()+"个");
}
/**
* 拾取任务
* 候选人:谁先拾取这个任务,谁就是任务执行人/代理人
*/
@Test
public void claimTask(){
//根据taskId拾取任务
String userId="bajie";
Task task = taskService.createTaskQuery().taskId("d163c7c0-2111-11eb-8532-603a7c6bd5e8").singleResult();
taskService.claim(task.getId(),userId);
System.out.println(userId + "任务拾取成功!!");
}
/**
* 归还任务与交办任务
* 如果我拾取了,后来我有不想做了,就可以用归还任务
*/
public void unClaimTask(){
Task task = taskService.createTaskQuery().taskId("d163c7c0-2111-11eb-8532-603a7c6bd5e8").singleResult();
//将执行人设置为null,就相当于归还了
//taskService.setAssignee(task.getId(),null); //归还任务
taskService.setAssignee(task.getId(),"wukong"); //交办任务
}
}