【原创】流程引擎的网关(遵循BPMN2.0)设计总结
概述
BPMN 2.0是什么呢?业务流程模型注解(Business Process Modeling Notation - BPMN)是 业务流程模型的一种标准图形注解。这个标准 是由对象管理组(Object Management Group - OMG)维护的,BPMN2规范定义了非常丰富的语言,为建模和执行业务流程。
其中BPMN2.0中网关是工作流引擎中重要的一个路径决策,网关是用来控制流程中的流向的。更确切的是, 当一个token(BPMN 2.0中execution的概念注解)到达一个网关, 它会根据网关的类型进行合并或切分,网关描绘成一个菱形,使用一个内部图标来指定类型 (排他,并行,多路等等)。
F2BPM工作流引擎自主研发中使用并应用遵循了BPMN2.0和WFMC的规范参考。同时在此指导的规范的基础上梳理并发展了如下的网关类型,更加贴切中国人自己的使用习惯和有更多的引擎流转处理能力。本文也是对BPMN2.0网关的一个总结,提供给有兴趣的人员作为参考。
1 排他网关
排他网关(也叫异或网关), 用来在流转中实现发散分支决策。 当流程执行到这个网关,所有流出的迁移线都会被求解计算一遍。 其中第一条条件解析为true迁移线会被选中(当多个条件为true时,第一个决策被执行)并且不再计算其它流出分支,让流程沿着第一条被选中的迁移线运行;如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。
2 多路网关
多路网关(也叫或网关,也称为发散网关),用来在流转中实现发散分支决策。 当流程执行到这个网关,与排他网关类似,区别在于发散网关将所有外出的分支迁移线都会被求解计算一遍。 其中条件解析为true迁移线会被选中,让流程沿着所有被选中的迁移线并行运行。如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。
3 并行网关
并行网关, 用来在流转中实现无条件的聚合分支决策和发散分支决策。当流程执行到这个网关,所有流出的迁移线条件都会被忽略,只有全部流入的分支都到达时才会触发发散分支行为。所有流出的迁移线都会被选中。让流程沿着所有流出的迁移线并行运行。
4 并行开始网关
并行开始网关是并行网关的独立拆分,只是并行开发网只有发散行为,用来在流转中实现无条件的发散分支决策。当流程执行到这个网关,所有流出的迁移线条件都会被忽略,所有流出的迁移线都会被选中。让流程沿着所有流出的迁移线并行运行。
5 并行结束网关
并行结束网关, 是并行网关的独立拆分,只是并行结束网只有聚合行为,用来在流转中实现无条件的聚合分支决策。当流程执行到这个网关,所有流入的迁移线条件都被要求流入,当全部流入的分支都到达时才会触发发散分支行为。
6 复杂网关
复杂网关,复杂网关是聚合网关与发散网关的综合体,用来在流转中实现条件的多路聚合分支决策和多路发散分支决策。当流程执行到这个网关,根据所设定聚合规则进行聚合计算,当聚合完毕触发发散动作,所有流出的分支迁移线条件都会被求解计算一遍。 其中条件解析为true迁移线会被选中,让流程沿着所有被选中的迁移线并行运行。如果没有任何一条流出分支可执行,则抛出异常,中断执行,在流程设计时应该避免这种情况的发生,至少需要确保有一条分支的计算结果为true。
只有全部流入的分支都到达时才会触发发散分支行为。
7聚合网关
聚合网关, 用来在流程中实现聚合决策。 当流程执行到这个网关,根据所设定的聚合规则进行计算,当聚合完毕时触发流转到下一节点。聚合规则可以是并行结束行为,也可以是多重聚合行为,或者多路聚合行为。
8 事件网关
事件网关,基于事件网关允许根据事件判断流向,用来在流转中实现异或分支决策。当流程执行到这个网关,网关的每个流出分支都要连接到一个中间捕获事件,网关会进入等待状态:流程会暂停执行。与此同时,会为每个流出分支建相对的事件订阅,当捕获取事件源时触发条件计算,计算结果为ture时分支被选中,其它分支将被忽略,并选取最先被选中的分支执行流转。
9泳道
泳道不影响流程的流转,只是一个对流程节点进行区域划分的流程图展示,便于在流程节点多的流程显示上更上直观明了。F2BPM有两种泳道:
上图中间无虚线分隔的泳道
上图中间有虚线分隔的泳道
上图:流程图中的网关示例
【原创】流程引擎的网关(遵循BPMN2.0)设计总结的更多相关文章
- Fixflow引擎解析(二)(模型) - BPMN2.0读写
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- 基于开源流程引擎开发BPM或OA有哪些难点
前言 如何基于开源流程引擎开发OA系统?开源流程引擎哪个好?把它整合到自己的产品里难不难,有没有啥风险?这是大家经常遇到的问题.笔者从2006年开始参与流程引擎开发,经历了三代流程引擎研发,支 ...
- .NET 开源工作流: Slickflow流程引擎高级开发(八) -- 审批网关(ApprovalOrSplit)模式的应用
前言:业务流程流转过程中,审批类型的节点是比较常见的,在审批操作中,常见的操作就是就是主管人员对待办事项进行同意或者拒绝.所以网关处理节点,就是需要对这两种审批结果进行预备处理,审批网关是在或分支(O ...
- 从零开始学习和改造activiti流程引擎的13天,自己记录一下
day#1(11.13) 尝试通过spring boot 集成最新版activiti 7,但是苦于官方的文档基本为空,无法完成spring boot的配置,最终按照activiti 6的文档,手工初始 ...
- activiti5/6 系列之--Activiti与BPMN2.0规范相关节点对应关系
根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subproce ...
- Activiti工作流与BPMN2.0规范
本章内容根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subp ...
- BPMN2.0 规范
1 启动事件 每个流程总是以启动事件作为入口,启动事件在BPMN2.0 中以细线圆圈表示.分为三种类型 空启动事件 定时启动事件 异常启动事件 消息启动事件 启动事件都是等待第三方触发才可以启动. 定 ...
随机推荐
- FileDetector-基于java开发的照片整理工具
1. 项目背景 开发这个功能的主要原因如下: 1. 大学期间拍摄了约50G的照片,照片很多 2. 存放不规范,导致同一张照片出现在不同的文件夹内,可读性差,无法形成记忆线. 3. 重复存放过多,很多照 ...
- servlet中doPost()和doGet()
转载至 http://blog.163.com/grandry_it_bird/blog/static/1751633362010102615553610/ 一般来说我们是用不到doGet方法的,do ...
- 改造百度ueditor字体为rem及相关体会
提到富文本,可能大家都用到过百度的ueditor,作为一个重量级的插件,总结起来一句话,功能很强大,使用很费心.不知道是不是太久没有维护了,ueditor的文档可读性还真是差也可能是悟性不够吧.本文也 ...
- shell下office、html、pdf文档互转方法
分类: 后台开发 版权声明:本文为博主原创文章,未经博主允许不得转载. OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexp ...
- alert执行顺序
<p><span id="span1">Hello World!</span></p> <script type=" ...
- 【转】为什么选择Spring Boot作为微服务的入门级微框架
本文为普元云计算高级工程师许二虎在普元云计算架构设计群的微课堂分享.如需加入普元新一代数字化企业云平台研发设计群参与微课堂.架构设计与讨论直播,请直接回复此公众号:"加群 姓名 公司 职位 ...
- 【Beta阶段】第三次scrum meeting
Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 打包上传团队代码 100% 查找适合的素材模块,和105一起把手势功能连接 ...
- [BT5]信息收集1-1 Dnsenum
0.工具介绍 The purpose of Dnsenum is to gather as much information as possible about a domain. The progr ...
- 201521123081《java程序设计》 第13周学习总结
本次作业参考文件 正则表达式参考资料 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 参考资料:XMind 2. 书面作业 Q1. 网络基础 1.1 比较 ...
- 201521123085《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 finally 题目4-2 1.1 截图你的提交结果(出现学 ...