Springboot整合Activity7:任务,历史任务,UEL表达式(二)
任务
介绍
1. 就是对BPMN业务图中的任务开始操作:查询任务,完成任务,拾取任务,归还任务等
2. 拾取任务:将没有办理人的任务赋给某人进行处理。
3. 归还任务:将代理人取消,设置为null
4. 因为是任务操作,所以需要 ***TaskService***
属性介绍
![在这里插入图片描述](https://img-blog.csdnimg.cn/f10134c0c5a34dc6aea650752f77a7e1.png)
案例
@Autowired
private TaskService taskService;
@Test
public void gettasks(){
List<Task> list = taskService.createTaskQuery().list();
for (Task task : list) {
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println("处理人"+task.getAssignee());
}
}
@Test
public void gettasksByAssignee(){
List<Task> list = taskService.createTaskQuery()
.taskAssignee("wukong")
.list();
for (Task task : list) {
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println("处理人"+task.getAssignee());
}
}
@Test
public void completeTask(){
taskService.complete("实例id");
System.out.println("完成任务");
}
@Test
public void claimtask(){
Task task = taskService.createTaskQuery().taskId("实例id").singleResult();
taskService.claim("实例id","候选人id");
}
@Test
public void settaskassignee(){
Task task = taskService.createTaskQuery().taskId("实例id").singleResult();
taskService.setAssignee("实例id","null");
taskService.setAssignee("实例id","其他人id");
}
历史任务
介绍
1.当一个实例任务完成后,工作流会自动在任务表等会删除这个记录,并保存在历史表
2.历史表操作就用到 HistoryService
代码
@Autowired
private HistoryService historyService;
@Test
public void gethistoryTaskInstanceByUser(){
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.taskAssignee("bajie")
.orderByHistoricTaskInstanceEndTime().asc()
.list();
for (HistoricTaskInstance hi : list) {
System.out.println(hi.getId());
System.out.println(hi.getName());
System.out.println(hi.getAssignee());
System.out.println(hi.getProcessInstanceId());
}
}
@Test
public void gethistoryTaskInstanceByInstance(){
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId("实例id")
.orderByHistoricTaskInstanceEndTime().asc()
.list();
for (HistoricTaskInstance hi : list) {
System.out.println(hi.getId());
System.out.println(hi.getName());
System.out.println(hi.getAssignee());
System.out.println(hi.getProcessInstanceId());
}
}
UEL表达式
介绍
1. 又称统一表达语言,就是在
2. uel表达式:在启动流程实例,任务完成时可以使用uel表达式携带参数
![基本概述](https://img-blog.csdnimg.cn/cfe2b9fbc75e478c9485dd6b218a8559.png)
![运行时的相关数据库](https://img-blog.csdnimg.cn/8526b3a0889e49d8a10c70b2db7f482f.png)
代码
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Test
public void initProcessInstanceWithArgs(){
Map<String,Object> variables = new HashMap<>();
variables.put("ZhiXingRen","wukong");
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("myProcess_UEL_V1","bket01"
,variables);
System.out.println("流程实例id:" + processInstance.getProcessDefinitionId());
}
@Test
public void completeTaskWithArgs(){
Map<String,Object> variables = new HashMap<>();
variables.put("pay","101");
taskService.complete("60a326bd-8138-11ed-a774-f85ea0a4be6e",variables);
System.out.println("完成任务");
}
@Test
public void initProcessInstanceWithClassArgs(){
UEL_POJO uel_pojo = new UEL_POJO();
uel_pojo.setZhixingren("bajie");
Map<String,Object> variables = new HashMap<>();
variables.put("uelpojo",uel_pojo);
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("myProcess_uelv3","bket01"
,variables);
System.out.println("流程实例id:" + processInstance.getProcessDefinitionId());
}
@Test
public void initProcessInstanceWithCandidataArgs(){
Map<String,Object> variables = new HashMap<>();
variables.put("houxuanren","wukong,tangseng");
taskService.complete("01125c1c-813a-11ed-bf93-f85ea0a4be6e",variables);
System.out.println("完成任务");
}
@Test
public void otherArgs(){
runtimeService.setVariable("实例id","流程变量key","流程变量value");
}
@Test
public void otherLocalArgs(){
runtimeService.setVariableLocal("实例id","流程变量key","流程变量value");
}