BPMN这点事-BPMN扩展元素
什么是BPMN扩展元素?我们为什么要从BPMN元素中界定出一个扩展元素的子集?BPMN扩展元素是我们平时使用频率不高的BPMN元素,这些元素更多的面向开发人员而不是业务人员,它们强调流程执行的细节,例如对事件子流程和事务性子流程的定义和对更多具有具体执行语义事件类型的定义。BPMN扩展元素使BPMN变得复杂,它关注流程的执行层面。对于BPMN扩展元素,我们的观点是大概知道它们所表达的语义即可,需要时再查规范。
BPMN扩展元素包括了这些元素,如下图红色部分所示:
- 两种子流程:事件子流程(EventSub-Process)和事务性子流程(Transaction);
- 八种事件:条件事件(ConditionalEvent)、链接事件(Link Event)、多重事件(Multiple Event)、并行多重事件(Parallel Multiple Event)、出错事件(Error Event)、补偿事件(CompensationEvent)、取消事件(Cancel Event)和升级事件(Escalation Event);
- 四种网关:包容性网关(Inclusive)、复杂网关(Complex)、排他事件网关-实例化(ExclusiveEvent-based Gateway-instantiate)和并发事件网关-实例化(Parallel Event-based Gateway-instantiate);
图10‑52BPMN的扩展元素
BPMN扩展元素全部是流对象元素,在下面的小节中,我们将按照活动、事件和网关的顺序展开,同时,在活动里,我们会首先讨论活动的内部循环和多实例行为。
10.3.3.1 活动
内部循环和多实例行为
在实际生活中,我们经常需要重复执行某项任务直至满足一定的条件为止。例如,作为作者,我们需要不断的修改稿子直到编辑认可为止;作为顾客,我们与装修公司的合同里写到:装修不达到要求就不付款。
存在两种类型的循环:一种是类似于程序语言里的“while”,先判断是否满足循环的条件,如果满足才执行,然后再判断循环;一种是类似于程序语言里的“do while”,先执行,然后再判断是否满足循环的条件,如果满足就再循环。活动的内部循环行为实现了工作流控制模式里的结构化循环模式(WCP_21)。
图10‑53活动的循环行为
与活动的内部循环产生一个活动实例重复执行相比,活动的多实例行为会产生多个活动实例,这些活动实例可以并行执行也可以顺序执行。更加复杂的情况请参考工作流控制模式里的多实例模式。
图10‑54活动的多实例行为
子流程
扩展元素里的子流程有两种:事件子流程和事务性子流程。
事件子流程被嵌入到子流程里使用,处理子流程执行过程中发生的事件,我们使用虚线框标识事件子流程,它需要由一个事件触发器触发,根据不同的行为,事件子流程又分为中断和非中断两种,中断事件子流程中断父流程的执行,非中断事件子流程与父流程一同执行,我们使用两种不同的开始事件类型来区分这两种事件子流程的行为:中断事件子流程的开始事件(实线圆圈)与非中断事件子流程的开始事件(单虚线圆圈)。
图10‑54事件子流程
事务性子流程具有ACID属性,它具有三个输出:
- 成功完成(SuccessfulCompletion):事务成功完成,我们使用一个顺序流连接成功后的后续活动;
- 失败完成(Failed Completion):事务执行不成功被取消,事务回滚,所有定义有补偿活动的活动都被补偿,我们使用一个取消捕获事件来连接事务取消后的后续活动;
- 严重异常(Hazard):事务执行过程中系统出现严重的异常,事务无法回滚,活动无法补偿,我们使用一个异常捕获事件来处理这种严重的情况,通常我们会继续抛出异常或者通知上一级流程进行处理。
图10‑56事务性子流程
BPMN这点事-BPMN扩展元素的更多相关文章
- HTML5部分新标签属性及DOM扩展元素
HTML5定义了一系列新元素,如新语义标签.智能表单.多媒体标签等. 我们日常讨论的H5其实是一个泛称,它指的是由HTML5 + CSS3 + Javascript等技术组合而成的一个应用开发平台. ...
- ExcelReport第三篇:扩展元素格式化器
导航 目 录:基于NPOI的报表引擎——ExcelReport 上一篇:ExcelReport源码解析 概述 上篇中已介绍了ExcelRepor的架构,本篇将通过例子讲述如何扩展元素格式化器以满足 ...
- T-SQL——透视PIVOT动态获取待扩展元素集
目录 0.背景说明 1.准备测试数据 2.示例1--利用SELECT循环赋值 3.示例2--使用游标 4.示例3--使用FOR XML PATH() 5. 参考 志铭-2021年10月8日 00:57 ...
- Manifest中meta-data扩展元素数据的配置与获取
简介-meta是什么 在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容: <meta-data andr ...
- Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- BPMN 2.0规范
.1. BPMN 2.0是什么呢? 业务流程模型注解(Business Process Modeling Notation - BPMN)是 业务流程模型的一种标准图形注解.这个标准 是由对象管理组( ...
- 什么是 BPMN ?为什么我们要用 BPMN 和工作流 ?
BPMN 和 Activiti 介绍 工作流介绍 在任何行业和企业中,都有各种各样的流程,例如: 请假流程 报销流程 入职流程 离职流程 出差流程 等等-- 就算你自己没有设计过工作流,那么你每天肯定 ...
- activiti搭建(五)BPMN介绍
转载请注明源地址:http://www.cnblogs.com/lighten/p/5931207.html 对于BPMN我也不是十分清楚,目前也只是因为对于Modeler中不熟悉的组件查询,来对这部 ...
- SpringBoot+Activiti+bpmn.js+Vue.js+Elementui(OA系统审批流)
引言:OA系统用到请假.加班.调休.离职,需要使用工作流进行流程审批 一:activiti流程设计器的选择(通过学习activiti工作流过程中,发现一款好的流程设计器将会更好的方便的设计好流程(主要 ...
随机推荐
- java 分割split
1.如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");2.如果用 ...
- 通过HTTP头控制浏览器的缓存
通过HTTP头控制浏览器的缓存 浏览器缓存是提高用户体验和提升程序性能的一个很重要的途径,通过浏览器的缓存控制,可以对实时性要求不高的数据进行缓存,可以减少甚至不需要再次对服务器的请求就可以显示数据. ...
- 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach
比赛的时候,被题目误导了,题目最后说结果可能很大,要取模,那时就想直接求会TLE的!!! 赛后才知道,坑啊………… 代码如下: #include<iostream> #include< ...
- poj 2068 Nim 博弈论
思路:dp[i][j]:第i个人时还剩j个石头. 当j为0时,有必胜为1: 后继中有必败态的为必胜态!!记忆化搜索下就可以了! 代码如下: #include<iostream> #incl ...
- lintcode:逆序对
题目 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.给你一个数组,求出这个数组中逆序对的总数.概括:如果a[i] > a[j] 且 i < j, a[i] ...
- java反射机制(基础版)
package com.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ja ...
- 图片bmp格式转换为jpg格式
一下代码经过个人测试,可用 注意:将jpg格式的图片重命名为bmp格式,在该代码中是不能转换的,会报空值异常!而且IE10是显示不了这样的图片的 import java.awt.Image; impo ...
- iOS开发--正则表达式
目录[-] 正则表达式简单语法总结 一.什么是正则表达式 二.正则表达式的基础语法 1.字面值 2.特殊字符(元字符) (1)句号 (2)字符类([]) (3)区间符号(-) (4)取反符号(^) ( ...
- JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-003映射实体时的可选操作(<delimited-identifiers/>、PhysicalNamingStrategy、PhysicalNamingStrategyStandardImpl、、、)
一.自定义映射的表名 1. @Entity @Table(name = "USERS") public class User implements Serializable { / ...
- QT使用WOL实现远程一键开机(局域网,需要目标电脑的主板支持,并且插上网线,用udpSocket.writeDatagram一句话就可以)
功能:让关机的电脑一键开机,需要目标电脑的主板支持,并且插上网线: 效果:相当于手动按了一下目标电脑的开关机按钮. 没啥技术含量,简单开说... 1.获取目标机MAC地址 QByteArray sMa ...