1. 排他网关
排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策。
当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分支,
注意,排他网关只会选择一个为 true 的分支执行。(即使有两个分支条件都为 true,排他网关也会只选择一条分支去执行)
1.1 定义流程
1.2 部署流程
/** * 流程部署的方法 */ @Test public void deployment() { //获取ProcessEngine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取RepositoryService对象 RepositoryService repositoryService = processEngine.getRepositoryService(); //流程部署 Deployment deploy = repositoryService.createDeployment() .addClasspathResource("holiday/holidayOld.bpmn") .name("请假流程-排他网关") .deploy(); System.out.println("流程部署成功:" + deploy.getName()); }
1.3 启动流程 当前给的流程变量是5 两个条件都符合
/** * 启动流程实例,设置流程变量的值 */ @Test public void startInstance() { //获取ProcessEngine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //设置流程变量 Holiday holiday = new Holiday(); holiday.setNum(5); Map<String, Object> assMap = new HashMap<>(); assMap.put("holiday", holiday); //启动流程实例 ProcessInstance holidayGroup = runtimeService.startProcessInstanceByKey("holidaygetway", assMap); System.out.println("流程实例:" + holidayGroup.getId()); }
1.4 处理任务
/** * 处理任务 */ @Test public void commitTask() { //获取ProcessEngine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService对象 TaskService taskService = processEngine.getTaskService(); //查询到自己的任务,然后通过任务ID进行提交 Task task = taskService.createTaskQuery().processDefinitionKey("holidaygetway").taskAssignee("zhangsan").singleResult(); //处理任务 taskService.complete(task.getId()); }
1.5 处理lisi的任务
/** * 处理任务 */ @Test public void commitTask() { //获取ProcessEngine对象 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService对象 TaskService taskService = processEngine.getTaskService(); //查询到自己的任务,然后通过任务ID进行提交 Task task = taskService.createTaskQuery().processDefinitionKey("holidaygetway").taskAssignee("lisi").singleResult(); //处理任务 taskService.complete(task.getId()); }
1.6 处理完lisi的任务时条件两者都符合时选择ID最小的分支
1.7 查看数据库任务表
原文:https://www.cnblogs.com/szhhhh/p/12653478.html