一、什么是网关

所谓“网关”就是用来决定流程流转指向的,可能会被用作条件分支或聚合,也可以被用作并行执行或基于事件的排它性条件判断网关用菱形表示,用于控制流程的分支和聚合。

Camunda提供了四种网关:排他网关、并行网关、包容性网关、基于事件的网关。

二、排他网关

流程执行到该网关时,按照输出流的顺序逐个计算,当条件的计算结果为true时,继续执行当前网关的输出流;如果多条线路计算结果都是 true,则会执行第一个值为 true 的线路。如果所有网关计算结果没有true,则引擎会抛出异常。

排他网关需要和条件顺序流【也就是图上的连线】结合使用,default 属性指定默认顺序流,当所有的条件不满足时会执行默认顺序流。

三、测试

然后部署流程定义再发起流程实例测试一下,在启动流程时把参数值都给到位,正常情况下是在申请人发起申请后才给序列流上的条件给值

    public ResultReturn startProcessInstanceByKey(String processDefinitionKey, String businessKey,String initiator) {try {Map<String,Object> map = new HashMap<>();//设置流程发起人identityService.setAuthenticatedUserId("initiator");map.put("userOne",initiator);map.put("day",4);map.put("minister","userTwo");map.put("manager","userThree");ProcessInstance processInstance=runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,map);if (ObjectUtil.isNull(processInstance)) {return ResultReturnUtil.error(ResponseEnums.PROCESS_INSTANCE_START_FAIL);} else {String processInstanceId = processInstance.getProcessInstanceId();return ResultReturnUtil.success(processInstanceId);}}catch (Exception e){log.error(e.getMessage());throw new ProcessException(ResponseEnums.PROCESS_INSTANCE_START_FAIL.getMsg());}}
}

从图中可以看到发起人提交申请后,流程走了上半部分

四、分支驳回

到这里如果领导驳回了该怎么做?驳回也就是让流程从某个节点重新开始,我们直接上代码

    @Overridepublic ResultReturn startNode(String processInstanceId,String nodeId) {//获取当前环节实例ActivityInstance activity = runtimeService.getActivityInstance(processInstanceId);runtimeService.createProcessInstanceModification(processInstanceId)//关闭相关任务.cancelActivityInstance(activity.getId()).setAnnotation("驳回")//启动目标活动节点.startBeforeActivity(nodeId).execute();return ResultReturnUtil.success("成功");}

传入流程实例id和目标节点id即可

查看流程图,已经回到发起人节点

其实后台会出现一段提示

意思也就是没有默认流,是不好的建模,直接修改流程图选定一条默认流即可。

查看流程历史也是很好区分的

【Camunda八】Camunda网关相关推荐

  1. Camunda教程|Camunda视频

    Camunda教程|Camunda视频 因为Camunda资料是在是太少了,为此分享牛推出了一套Camunda视频 ,方便大家快速入手Camunda. 目录 因为Camunda资料是在是太少了,为此分 ...

  2. Mr.J-- HTTP学习笔记(八)-- 网关

    我的专栏:  HTTP学习笔记 网关是资源和应用程序之间的粘合剂. 应用程序可以(通过 HTTP 或其他已定义的接口) 请求网关来处理某条请求,网关可以提供一条响应. (a)网关收到了对 FTP UR ...

  3. drools动态配置规则_微服务实战系列(八)-网关springcloud gateway自定义规则

    1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...

  4. Camunda BPM工作流引擎入坑指南(一)

    Camunda BPM工作流引擎入坑指南 欢迎使用Camunda BPM工作流 入坑说明书 入坑准备工作 BPMN2.0基础 Camunda实战 Camunda BPM Activiti对比 功能快捷 ...

  5. Camunda工作流引擎简记

    本文转载自玩转Camunda之实战篇-赶紧收藏起来吧_哔哩哔哩_bilibili 其中部分内容,经过本人修改 一.工作流相关介绍 BPM(BusinessProcessManagement),业务流程 ...

  6. 基于camunda开源流程引擎如何实现会签及会签原理解析

    一.背景 市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早, ...

  7. 基于camunda如何实现会签:camunda会签流程配置与原理解析

    一.背景 市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.由于jbpm.activiti.flowable这几个流程引擎出现的比较早, ...

  8. 流程引擎之Camunda简介

    背景 Camunda 是支持 BPMN(工作流和流程自动化).CMMN(案例管理) 和 DMN(业务决策管理) java 框架.Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 ...

  9. [15]深入浅出工作开源框架Camunda:定时任务

    1.引言 在BPMN中,可以通过改变"Timer Start Event" 启动节点的启动类型来自动启动流程实例. 其提供了下面三种定时自动触发流程实例的模式: 指定固定的时间点启 ...

最新文章

  1. Spring Cloud(七)服务网关 Zuul Filter 使用
  2. Andrew Gelman、Aki Vehtari​ | 过去50年最重要的统计学思想是什么?
  3. get vue 和set 用法_深入剖析Vue源码 - 数据代理,关联子父组件
  4. 显示纯服务器_不止于手机!华为台式机真的来了,网友:这次真的“纯国产”...
  5. Panorama Viewer – jQuery 360度全景展示插件
  6. 推荐5个应用 jQuery 特效的精美网站
  7. 使用Docker制作zentao禅道镜像
  8. python提取xml的所有框坐标_python 提取批量xml文件中的坐标信息存入txt文件 xml文件转txt文件...
  9. 【剑指Offer】15顺时针打印矩阵
  10. X264编码h264
  11. 非对称加密算法 (RSA、DSA、ECC、DH)
  12. java程序往微信群里发消息_通过java程序,给微信发送消息
  13. 《星际迷航*:舰桥船员》与虚拟现实新趋势
  14. 【数据分析】系列-Python分析淘宝4200款Bra(没错,就是文胸)后,发现最好卖的款式居然是。。。
  15. Windows日志分析(中)
  16. 关于页面自动提交两次的问题(360浏览器)
  17. 逆变器锁相原理及DSP实现
  18. JVM内存模型和性能调优:阿里巴巴Arthas调优工具:什么是Arthas- 第43篇
  19. 计算机管理员年终总结突出点,联社计算机管理员个人工作总结
  20. 计算机应用模块等级考试大纲,计算机等级考试大纲最新.doc

热门文章

  1. VUE element-ui之table表格自增序号(前端实现)
  2. Java 重载与覆盖
  3. Python 小程序 绘制 小蛇
  4. 独立站精品模式占据主流
  5. elmo驱动器使用EAS II配置教程
  6. 2022源支付V5.1.7完整源码+前/后端协议2.2
  7. 数据库有数据但查询出来的值为Null
  8. 鸿蒙系统市场分析,转转手机市场分析:鸿蒙全面商用,华为能否突破16%市占率生死线?...
  9. Vuex是什么?以及 和本地存储localstorage的区别
  10. JavaScript基础测试