例如我们有这么个需求,也就是请假大于等于3天的不仅需要经理审批还需要总经理审批,小于3天的直接由经理审批就可以了,
具体实现如下:
1. 在前面原有基础上进行修改,修改bpmn流程图,添加多一个task以及gateway->ExclusiveGateway:
点击链接线,设置main cogfig ->condition:
线上的字在general->name填上就可以了
2 重新部署下流程图,开启流程,然后提交申请:
public void completeTask(){
Map<String,Object>map = newHashMap<String,Object>();
map.put("user", "cwh");
map.put("day",3);//对应流程图中的condition ${day}
StringtaskId = "37505";
processEngine.getTaskService().complete(taskId,map);//完成任务
System.out.println("完成任务,任务ID"+taskId);
}
map.put("day",3)//对应流程图中的condition ${day}
我们提交一个请假天数为
3
的,那么正确的话流程会这么走
经理审批
->
总经理审批
->
结束
3 经理审批:
/**
* 经理审批
*/
@Test
public void completeTask1(){
Map<String,Object>map = newHashMap<String,Object>();
Stringtaskid = "45005";
map.put("user", "caiwenhao");
TaskServicetaskService = processEngine.getTaskService();
processEngine.getTaskService().complete(taskid,map);//完成任务
System.out.println("完成任务,任务ID"+taskid);
}
经理审批提交后将进入排他网关,如果经理审批后提交到的是总经理审批那么流程正确
运行后查看数据库task表发现确实到了总经理审批:
4 总经理审批
首先查找下上面分配给总经理‘caiwenhao’的任务
然后提交任务:
/**
* 总经理审批
*/
@Test
public void completeTask2(){
TaskServicetaskService = processEngine.getTaskService();
Stringtaskid = "47503";
processEngine.getTaskService().complete(taskid);//完成任务
System.out.println("完成任务,任务ID"+taskid);
}
运行后则流程结束