概述

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)设计总结的更多相关文章

  1. Fixflow引擎解析(二)(模型) - BPMN2.0读写

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  2. Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  3. Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍

    Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...

  4. 基于开源流程引擎开发BPM或OA有哪些难点

    前言     如何基于开源流程引擎开发OA系统?开源流程引擎哪个好?把它整合到自己的产品里难不难,有没有啥风险?这是大家经常遇到的问题.笔者从2006年开始参与流程引擎开发,经历了三代流程引擎研发,支 ...

  5. .NET 开源工作流: Slickflow流程引擎高级开发(八) -- 审批网关(ApprovalOrSplit)模式的应用

    前言:业务流程流转过程中,审批类型的节点是比较常见的,在审批操作中,常见的操作就是就是主管人员对待办事项进行同意或者拒绝.所以网关处理节点,就是需要对这两种审批结果进行预备处理,审批网关是在或分支(O ...

  6. 从零开始学习和改造activiti流程引擎的13天,自己记录一下

    day#1(11.13) 尝试通过spring boot 集成最新版activiti 7,但是苦于官方的文档基本为空,无法完成spring boot的配置,最终按照activiti 6的文档,手工初始 ...

  7. activiti5/6 系列之--Activiti与BPMN2.0规范相关节点对应关系

    根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subproce ...

  8. Activiti工作流与BPMN2.0规范

    本章内容根据BPMN2.0规范的分类划分为以下部分: 1.启动与结束事件(event) 2.顺序流(Sequence Flow) 3.任务(Task) 4.网关(Gateway) 5.子流程(Subp ...

  9. BPMN2.0 规范

    1 启动事件 每个流程总是以启动事件作为入口,启动事件在BPMN2.0 中以细线圆圈表示.分为三种类型 空启动事件 定时启动事件 异常启动事件 消息启动事件 启动事件都是等待第三方触发才可以启动. 定 ...

随机推荐

  1. Spring详解(五)------AOP

    这章我们接着讲 Spring 的核心概念---AOP,这也是 Spring 框架中最为核心的一个概念. PS:本篇博客源码下载链接:http://pan.baidu.com/s/1skZjg7r 密码 ...

  2. HTTP手记

    ---------------------tcp/ip模型和osi模型---------------------tcp/ip协议模型   osi模型应用层   应用层 表示层 会话层传输层   传输层 ...

  3. 学习js函数--自执行函数

    我在写代码时候经常会在tpl的<script>里写类似的代码: $(function(){ alert("我好饿"); }); 刚开始的时候只知道写了它不需要调用,直接 ...

  4. Arrays和Collections 对于sort的不同实现原理

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp46 1.Arrays.sort() 该算法是一个经过调优的快速排序,此算法 ...

  5. Maven(四)之Maven在IntelliJ IDEA的配置与使用

    前面介绍了Maven的一些基本知识,这一篇讲一下在IntelliJ IDEA配置和使用Maven 一.配置Maven 在File->Settings->Build,Execution,De ...

  6. URL.createObjectURL() 与 URL.revokeObjectURL()

    .URL.createObjectURL URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里. 新的对象URL ...

  7. VIN码识别对汽车行业的应用

    汽车VIN码识别: 识别系统到底是什么呢?来~大家往下看,这是易泊时代科技有限公司通过多年的ocr识别技术,与汽车Vin码识别/车架号识别系统相结合,针对机动车配置参数等信息的查询及采集而推出的一款V ...

  8. 使用BootStrap框架设置全局CSS样式

    一.排版 标题 HTML 中的所有标题标签,<h1> 到 <h6> 均可使用.另外,还提供了 .h1 到 .h6 类,为的是给内联(inline)属性的文本赋予标题的样式. & ...

  9. 测试驱动开发(TDD)

    测试驱动开发的基本概念 为什么会出现测试驱动开发 当有一个新的任务时,往往第一个念头就是如何去实现它呢? 拿到任务就开始编码,一边写,变修改和设计 我已经调试了好几遍,应该不会有问题了,好了,先休息一 ...

  10. 201521123017 《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 1.2 解释E remove(int index)源代码 1.3 结合1. ...