1.源码地址:https://github.com/heidaodageshiwo/springbootactivity
Activiti之排他网关
所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线路;
在右侧 palette中 的Gateway 有个 ExclusiveGateway 即为默认网关;
这里我们规定 根据请假天数,来具体让谁来审批,
请假天数小于3天,班长审批;
请假天数小于7天,大于等于3天,班主任审批;
请假天数大于等于7天,校长审批;
这里我们依然用表达式来实现;
班主任审批连线表达式;
至于校长审批,我们不需要再设置表达式了,排他网关可以指定默认的执行线路;
我们找到校长审批的id;
是flow8;
然后我们选中 排他网关,设置默认执行的线路;
部署:
启动:
查看任务张三:
完成:
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
TaskService taskService;
@RequestMapping("/StudentLeaveProcess31_deploy")
public String deploy() {
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("StudentLeaveProcess/StudentLeaveProcess3/StudentLeaveProcess3.bpmn") // 加载资源文件
.addClasspathResource("StudentLeaveProcess/StudentLeaveProcess3/StudentLeaveProcess3.png") // 加载资源文件
.name("学生请假流程2") // 流程名称
.deploy();
System.out.println("流程部署ID:" + deployment.getId());
System.out.println("流程部署Name:" + deployment.getName());
return "StudentLeaveProcess31_deploy";
}
// studentLevaeProcess2
@RequestMapping("/StudentLeaveProcess3_start")
public String start() {
ProcessInstance processInstance = runtimeService.
startProcessInstanceByKey("studentLevaeProcess3");
System.out.println("流程实例ID" + processInstance.getId());
System.out.println("流程定义ID" + processInstance.getProcessDefinitionId());
return "StudentLeaveProcess3_start";
}
@RequestMapping("/StudentLeaveProcess3_findTask1")
public String StudentLeaveProcess21_findTask1() {
List<Task> taskList = taskService // 任务相关Service
.createTaskQuery() // 创建任务查询
.taskAssignee("张三") // 指定某个人
.list();
for (Task task : taskList) {
System.out.println("任务ID:" + task.getId());
System.out.println("任务名称:" + task.getName());
System.out.println("任务创建时间:" + task.getCreateTime());
System.out.println("任务委派人:" + task.getAssignee());
System.out.println("流程实例ID:" + task.getProcessInstanceId());
}
return "StudentLeaveProcess3_findTask1";
}
@RequestMapping("/StudentLeaveProcess3_completeTask222")
public String StudentLeaveProcess2_completeTask222() {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("days", 8);
taskService.complete("62509",variables);
return "StudentLeaveProcess3_completeTask222";
}
@RequestMapping("/StudentLeaveProcess3_completeTask211122")
public String StudentLeaveProcess2_completeTask2111122() {
Map<String, Object> variables = new HashMap<String, Object>();
taskService.complete("65005");
return "StudentLeaveProcess3_completeTask221112";
}
流程完毕