【原创】流程引擎的网关(遵循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 中以细线圆圈表示.分为三种类型 空启动事件 定时启动事件 异常启动事件 消息启动事件 启动事件都是等待第三方触发才可以启动. 定 ...
随机推荐
- C++ 用lambda代替 unique_ptr 的Deleter
C++ 用lambda代替 unique_ptr 的Deleter 代码 #include <iostream> #include <cstdlib> #include < ...
- firebird常用语句
分页写法小例 SELECT FIRST templateid,code,name FROM template ; SELECT FIRST SKIP templateid,code,name FROM ...
- Spring Cloud官方文档中文版-服务发现:Eureka服务端
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server 文中例子我做了一些 ...
- vue-cli搭建多页面项目如何配置
这里使用的是webpack模板. 首先安装vue-cli,执行命令 npm install vue-cli -g: 安装完成后初始化一个项目模板:vue init webpack myproject; ...
- POJ3228 并查集或二分最大流枚举答案
忘记写题意了.这题题意:给出每个地点的金矿与金库的数量,再给出边的长度.求取最大可通过边长的最小权值使每个金矿都能运输到金库里. 这题和之前做的两道二分枚举最大流答案的问法很相识,但是这里用最大流速度 ...
- poj 3592 缩点+SPFA
题意:给出一个矩阵,其中#代表墙,不可走,0-9代表权值,*代表可以选择传送.求从0,0点开始出发能获得最大权值. 思路:因为*的出现会有环的情况,先建图连边,将环进行Tarjan缩点,之后再从0,0 ...
- 用shell批量编码转换
-------------------------------------文件内容转换:iconv-------------------------------------- 通常,从其他平台拷贝过来 ...
- 第二次项目冲刺(Beta阶段)--第五天
一.站立式会议照片 二.项目燃尽图 三.项目进展 - 今天任务是改进程序使程序能完成docx文件的读取,但是并没有成功实现解决该问题,所以燃尽图没有前进. -遇到的问题:不支持docx最早认为是jar ...
- 201521123066《Java程序设计》第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪 ...
- 控制结构(4) 局部化(localization)
// 上一篇:状态机(state machine) // 下一篇:必经之地(using) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 前情回顾 上一次,我们说到状态机结构( ...