排他网关
流程图绘制
排他网关后的每个分支的流程连线加上condition条件
流程图绘制完成,保存生成png文件
部署设计资源
/**
* 部署设计资源 即之前创建的流程设计图
*/
@Test
public void deploy() {
pe.getRepositoryService().createDeployment().addClasspathResource("MyProcess.png")
.addClasspathResource("MyProcess.bpmn").name("学生请假-排他网关").deploy();
}
act_re_deployment表生成部署的流程信息
启动测试
/**
* 启动流程实例
*/
@Test
public void start() {
// 通过id启动 启动时赋予流程执行人即 刚才${}中的值
//此时act_ru_execution act_ru_task 两张表中有数据
Map<String, Object> map = new HashMap<>();
map.put("student", "冯宝宝");
map.put("time", "请假2天");
ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey("myProcess", map);
}
- act_ru_variable表生成 该map也就是variable的信息
冯宝宝申请完成
/**
* 完成任务
* 此时act_ru_execution act_ru_task 两张表中没有数据
* 相对应的 在历史表中有数据
*/
@Test
public void completeTask() {
Map<String, Object> map = new HashMap<>();
map.put("day", "2");//流程图 流程连线的判断依据,sta
pe.getTaskService().complete("32507",map);//通过任务id来完成任务 此处将判断依据传入
//这里的id在实际应用中建议和实体类绑定
}
进行下一步,根据请假时间判断,送到相关人员那里进行审批.
/**
* 启动流程实例
*/
@Test
public void start() {
// 通过id启动 启动时赋予流程执行人即 刚才${}中的值
//此时act_ru_execution act_ru_task 两张表中有数据
Map<String, Object> map = new HashMap<>();
map.put("student", "冯宝宝");
map.put("time", "请假2天");
ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey("myProcess", map);
}
完成相关人审批
/**
* 完成任务
* 此时act_ru_execution act_ru_task 两张表中没有数据
* 相对应的 在历史表中有数据
*/
@Test
public void completeTask() {
Map<String, Object> map = new HashMap<>();
map.put("day", "2");//流程图 流程连线的判断依据,sta
pe.getTaskService().complete("35007",map);//通过任务id来完成任务 此处将判断依据传入
}
历史任务id35007
历史任务名称学生请假
历史任务创建时间Wed Jan 22 14:35:08 CST 2020
历史任务结束时间Wed Jan 22 14:36:05 CST 2020
历史任务执行人冯宝宝
历史任务id37504
历史任务名称班长审批
历史任务创建时间Wed Jan 22 14:36:05 CST 2020
历史任务结束时间null
历史任务执行人班长
再次执行
查询历史记录
/**
* 查看历史任务数据
*/
@Test
public void findHistoryTask() {
List<HistoricTaskInstance> htis = pe.getHistoryService()
.createHistoricTaskInstanceQuery()
.taskId("37504").list();
htis.forEach(hti->{
System.out.println("历史任务id"+hti.getId());
System.out.println("历史任务名称"+hti.getName());
System.out.println("历史任务创建时间"+hti.getCreateTime());
System.out.println("历史任务结束时间"+hti.getEndTime());
System.out.println("历史任务执行人"+hti.getAssignee());
});
}
历史任务id37504
历史任务名称班长审批
历史任务创建时间Wed Jan 22 14:36:05 CST 2020
历史任务结束时间Wed Jan 22 14:39:07 CST 2020
历史任务执行人班长
流程结束
解释
上述流程:
- 学生启动请假,完成请假任务,此处完成任务时, 填的taskId是学生请假的任务id,
- 完成后,学生请假的任务在运行表中消失,成为历史数据.
- 运行任务中出现,班长审批的任务,
- 班长执行审批,完成审批,此处完成任务时,天的taskid是班长审批任务的id