任务
介绍
1. 就是对BPMN业务图中的任务开始操作:查询任务,完成任务,拾取任务,归还任务等
2. 拾取任务:将没有办理人的任务赋给某人进行处理。
3. 归还任务:将代理人取消,设置为null
4. 因为是任务操作,所以需要 ***TaskService***
属性介绍
案例
@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")
//排序 asc:正序 desc:倒叙
.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());
}
}
/**
* 通过流程实例id查询历史任务
*/
@Test
public void gethistoryTaskInstanceByInstance(){
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId("实例id")
//排序 asc:正序 desc:倒叙
.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(){
//流程变量 //${ZhiXingRen}
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("实例id",null);
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());
}
/**
* 任务完成带参数,指定多个候选人
* 01125c1c-813a-11ed-bf93-f85ea0a4be6e
*/
@Test
public void initProcessInstanceWithCandidataArgs(){
Map<String,Object> variables = new HashMap<>();
//可以添加多个参数
variables.put("houxuanren","wukong,tangseng");
// taskService.complete("实例id",null);
taskService.complete("01125c1c-813a-11ed-bf93-f85ea0a4be6e",variables);
System.out.println("完成任务");
}
/**
* 直接指定流程变量
*/
@Test
public void otherArgs(){
runtimeService.setVariable("实例id","流程变量key","流程变量value");
// runtimeService.setVariables();
}
/**
* 局部变量
*/
@Test
public void otherLocalArgs(){
runtimeService.setVariableLocal("实例id","流程变量key","流程变量value");
// runtimeService.setVariablesLocal();
}
版权声明:本文为qq_67801847原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。