先画图:

再设置排他网关的流条件:


bpmn20.xml : 中的配置

<sequenceFlow id="sid-94D550DD-DD5D-4251-9AAF-414D363A168B" sourceRef="sid-503576A8-9907-462E-9CEF-A314A1D5FA24" targetRef="buildTask"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${maintainType== 'engineering'}]]></conditionExpression></sequenceFlow><sequenceFlow id="sid-C3C178CB-4726-414A-8618-A93BECB11071" name="非工建" sourceRef="sid-503576A8-9907-462E-9CEF-A314A1D5FA24" targetRef="operationTask"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${maintainType== 'unengineering'}]]></conditionExpression></sequenceFlow>

流程提交时: pass()

@Overridepublic void pass(Integer orderMaintainId, String taskId, String description, Map defaultAssigneeMap) {Task tempTask = flowableCommonService.getTask(taskId);String taskKey = tempTask.getTaskDefinitionKey();Map variableMap = new HashMap();// 排他网关转向条件// 维护派单if (MaintainTaskEnum.BUSINESS_TASK.getCode().equals(taskKey)) {OrderMaintain orderMaintain = this.getById(orderMaintainId);if (MaintainMode.REMOTE.getCode().equals(orderMaintain.getMaintainMode())) {// 非工建variableMap.put("maintainType", "unengineering");} else {// 工建variableMap.put("maintainType", "engineering");}}// 排他参数Task task = flowableCommonService.passTask(orderMaintainId, taskId, defaultAssigneeMap, variableMap);Integer processKeyId = ProcTypeEnum.MAINTAIN.getCode();/*修改审批历史*/flowableCommonService.updateHiAudit(OperTypeEnum.OperType1, processKeyId, taskId, task.getProcessInstanceId(), description);//判断流程是否结束,结束之后修改状态boolean isProcessInstanceFinished = processService.isProcessInstanceFinished(task.getProcessInstanceId());OrderMaintain orderMaintain = this.getByProcessInstanceId(task.getProcessInstanceId());//审核通过,流程结束修改为通过状态if (isProcessInstanceFinished) {orderMaintain.setAuditStatus(AuditStatus.AaudiStatus3.getCode());} else {//审核通过未结束,审核中orderMaintain.setAuditStatus(AuditStatus.AaudiStatus2.getCode());}updateById(orderMaintain);actProcCurrentTaskService.saveOrUpdate(orderMaintain.getProcessInstanceId(), processKeyId);}
/*** 下一个任务签收** @param pid* @param taskId* @return*/@Transactional(rollbackFor = Exception.class)public Task passTask(Integer pid, String taskId, Map defaultAssigneeMap, Map variableMap) {Task task = taskService.createTaskQuery().taskId(taskId).singleResult();//通过审核HashMap<String, Object> map = new HashMap<>();map.put(FlowableConst.OUT_COME, YesOrNo.YES.getValue());map.put(FlowableConst.PID, pid);Map<String, String> requestMaps = HttpContext.getRequestParameters();Iterator<Map.Entry<String, String>> entries = requestMaps.entrySet().iterator();Boolean hasAssignee = false;while (entries.hasNext()) {Map.Entry<String, String> entry = entries.next();String key = entry.getKey();if (key.contains(FlowableConst.ASSIGNEE)) {map.put(entry.getKey(), entry.getValue());hasAssignee = true;}}if (!hasAssignee && defaultAssigneeMap != null) {map.putAll(defaultAssigneeMap);}if (variableMap != null) {map.putAll(variableMap);}//        String assignee = ShiroKit.getUser().getAccount();String assignee = task.getAssignee();//任务签收,task assignee会变成签收人taskService.claim(taskId, assignee);taskService.complete(taskId, map);return task;}

flowable 排他网关相关推荐

  1. 学习记录555@flowable排他网关、并行网关、包容网关

    排他网关 排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data-based gateway),用于对流程 ...

  2. Flowable进阶学习(六)网关(排他网关、并行网关、包容网关、事件网关)

    文章目录 排他网关 案例: 并行网关 案例: 包容网关 案例: 事件网关 1. 定时事件 1.1 定时器启动事件 案例 网关(gateway)用来控制流程的流向.来实现复杂的审批流程. 网关的分类包括 ...

  3. 第15篇: Flowable-BPMN操作流程之排他网关

    接上一篇: 第14篇:Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章 ...

  4. 怎么获取排他网关下的所有userTask?

    前面文正有写过根据当前节点获取下一个UseTask节点,有需要了解的可以去看这篇博客根据当前节点获取下一个UseTask节点,,但是现在需求又发生了该表,如果在一个节点下需要获取排他网关下所有的use ...

  5. 排他网关(ExclusiveGateWay)

    网关(ExclusiveGateWay) 作者:邓家海 2018年3月11日 00:13:25 情景: 某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时 ...

  6. java中activiti框架中的排他网关使用方法,多条件判断

    当排他网关的判断条件中出现多个条件时,需要注意,设置判断条件时,可能遇到,流向相同的任务,而判断条件的变量个数不同 那么,必须在后面的运行任务时,将所有的涉及到的变量都设置进任务中,只不过,如果这个任 ...

  7. Activiti进阶(七)——排他网关(ExclusiveGateWay)

    转载地址:http://blog.csdn.net/zjx86320?viewmode=contents 上一篇博文我们简单介绍了一下连线,也分析了一种情况,就是在工作流中,用户任务下面有两个连线,如 ...

  8. activiti(7.0)排他网关

    import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.acti ...

  9. java排他_Activiti之排他网关

    Activiti之排他网关 所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线路: 在右侧 palette中 的Gateway 有个 ExclusiveGateway 即为默认网关: 我们 ...

最新文章

  1. 汇编语言第五到八章总结
  2. 是什么浪费了我的时间
  3. Android Framework系统服务详解
  4. python382怎么用_用python做UDP连接
  5. MySQL的五种日期和时间类型
  6. Python实现本机网络流量监视器
  7. ubuntu10.10升级到11.4出错之问题解决
  8. javascript第二天学习
  9. 深入JavaScript之获取cookie以及删除cookie
  10. Bookmarks(2005-4-23)
  11. db4o数据库文件_繁忙的Java开发人员指南db4o,使用db4o进行数据库重构
  12. FileHandler文件处理
  13. 在遇到移动硬盘无法访问的情况下,如何无需格式化地修复硬盘?
  14. 已有项目如何添加到gitee(码云)仓库
  15. 如何自己重装系统win7
  16. 正则表达式切掉log日志前面不需要的内容
  17. native snappy library not available解决
  18. 集体户口和个人户口的区别,看完你就明白了
  19. Web3 哪个赛道最有机会?带你详解Web3基础设施赛道的“超级项目”
  20. TeamViewer以科技创新连接世界

热门文章

  1. CSS面试须知--关于图片
  2. 图像频率域分析之频域谱(FDE)
  3. 全部重点排污企业名录(整理成Excel更新至2021年)
  4. win10 powershell无法激活conda v4.9环境
  5. 极客时间运维进阶训练营第二周作业
  6. 亿道丨三防手机丨手持终端丨PDA丨优势与特点
  7. 【免费扩容onedrive】
  8. 将数组升序排列后,插入一个数,仍然保持升序排列。
  9. Hacked Exam-Google Codejam 2021 Round 1A
  10. 尚硅谷todolist案例