【原创】流程引擎的网关(遵循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 中以细线圆圈表示.分为三种类型 空启动事件 定时启动事件 异常启动事件 消息启动事件 启动事件都是等待第三方触发才可以启动. 定 ...
随机推荐
- 常用Linux操作指令
-------------------------------Linux目录------------------------------- /:根目录,一般根目录下只存放目录,在Linux下有且只有一 ...
- jQuery EasyUI弹出确认对话框(确认操作中.....)
因为毕业设计的原因,在初期设计系统的时候没有考虑功能的正确性,所以很多的功能都没有加验证和确认的操作,给人在操作方面上有一些不好的感觉(可能失误点击后,数据就别删除,或者增加了),所以在网上找了一些资 ...
- linq 起源
在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...
- 如何在centos7上安装源码包
在我们使用linux的过程中,有很多程序是通过红帽官网给的系统中安装的,但是一般来说,系统更新的速度比较慢,如果这个时候我们又想用最新版的该怎么办呢?总不能一直等系统升级吧╮(╯﹏╰)╭所以,我们可以 ...
- tkinter第三章(单选和多选)RadioButton CheckButton
最简单的CheckButton多选类 import tkinter as tk #checkButton的内容,多选 root = tk.Tk() v = tk.IntVar()#装整形变量的 #va ...
- 转:Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 团队作业八—第二次团队冲刺(Beta版本) 第 2 天
一.每个人的工作 (1) 昨天已完成的工作 昨天的工作主要是一些界面的设计,我们顺利完成了复杂模式题目数目界面.复杂模式做题界面.结果统计界面的具体代码编写,和一些细节的完善.还有日常冲刺博客的编辑. ...
- 第二次项目冲刺(Beta阶段)--第三天
一.站立式会议照片 二.项目燃尽图 三.项目进展 队员 ID 贡献比 王若凡 201421123022 20% 吕志哲 201421123021 16% 欧阳勇 201421123026 16% 卢 ...
- C语言中变量的作用域和生命周期
变量的类型: 1. 局部变量和全局变量 局部变量也称为内部变量. 局部变量是在函数内作定义说明的.其作用域仅限于函数内, 离开该函数后再 使用这种变量是非法的. 全局变量也称为外部变量,它是在函数外部 ...
- 201521123029《Java程序设计》第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 答:1. 课上讲了匿名内部类的使用,其中内部类就是定义在另一个类里面的类,与之相 ...