flowable 排他网关
先画图:
再设置排他网关的流条件:
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 排他网关相关推荐
- 学习记录555@flowable排他网关、并行网关、包容网关
排他网关 排他网关(exclusive gateway)(也叫异或网关 XOR gateway,或者更专业的,基于数据的排他网关 exclusive data-based gateway),用于对流程 ...
- Flowable进阶学习(六)网关(排他网关、并行网关、包容网关、事件网关)
文章目录 排他网关 案例: 并行网关 案例: 包容网关 案例: 事件网关 1. 定时事件 1.1 定时器启动事件 案例 网关(gateway)用来控制流程的流向.来实现复杂的审批流程. 网关的分类包括 ...
- 第15篇: Flowable-BPMN操作流程之排他网关
接上一篇: 第14篇:Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章 ...
- 怎么获取排他网关下的所有userTask?
前面文正有写过根据当前节点获取下一个UseTask节点,有需要了解的可以去看这篇博客根据当前节点获取下一个UseTask节点,,但是现在需求又发生了该表,如果在一个节点下需要获取排他网关下所有的use ...
- 排他网关(ExclusiveGateWay)
网关(ExclusiveGateWay) 作者:邓家海 2018年3月11日 00:13:25 情景: 某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时 ...
- java中activiti框架中的排他网关使用方法,多条件判断
当排他网关的判断条件中出现多个条件时,需要注意,设置判断条件时,可能遇到,流向相同的任务,而判断条件的变量个数不同 那么,必须在后面的运行任务时,将所有的涉及到的变量都设置进任务中,只不过,如果这个任 ...
- Activiti进阶(七)——排他网关(ExclusiveGateWay)
转载地址:http://blog.csdn.net/zjx86320?viewmode=contents 上一篇博文我们简单介绍了一下连线,也分析了一种情况,就是在工作流中,用户任务下面有两个连线,如 ...
- activiti(7.0)排他网关
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.acti ...
- java排他_Activiti之排他网关
Activiti之排他网关 所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线路: 在右侧 palette中 的Gateway 有个 ExclusiveGateway 即为默认网关: 我们 ...
最新文章
- 汇编语言第五到八章总结
- 是什么浪费了我的时间
- Android Framework系统服务详解
- python382怎么用_用python做UDP连接
- MySQL的五种日期和时间类型
- Python实现本机网络流量监视器
- ubuntu10.10升级到11.4出错之问题解决
- javascript第二天学习
- 深入JavaScript之获取cookie以及删除cookie
- Bookmarks(2005-4-23)
- db4o数据库文件_繁忙的Java开发人员指南db4o,使用db4o进行数据库重构
- FileHandler文件处理
- 在遇到移动硬盘无法访问的情况下,如何无需格式化地修复硬盘?
- 已有项目如何添加到gitee(码云)仓库
- 如何自己重装系统win7
- 正则表达式切掉log日志前面不需要的内容
- native snappy library not available解决
- 集体户口和个人户口的区别,看完你就明白了
- Web3 哪个赛道最有机会?带你详解Web3基础设施赛道的“超级项目”
- TeamViewer以科技创新连接世界