1 BPMN的历史背景
BPMN(Business Process Model and Notation),业务流程建模和标注。 Notation是BPMN的核心,即使用图形来表达业务流程。另外,BPMN是由OMG组织维护的一个公开的标准,与任何特定商业组织或工具是没有关系,无需为此付费。BPMN和传统的流程图的区别如下:
-
BPMN是一个正式的规范,各种图标、元件是有准确的含义和使用规范
-
BPMN可以描述基于事件触发的行为,比如响应超时、外部系统无法提供服务等
BPMN 标准发展版本历史如下。BPMN2.0在1.x基础上新增了元模型、存储、交互、执行。
版本号
|
发布时间
|
1.0
|
2007年3月
|
1.1
|
2008年1月
|
1.2
|
2009年1月
|
2.0
|
2011年1月
|
BPMN1.x被大多数的建模工具和BPMS厂商所支持。但是, BPMN1.x只是一些建模符号,不支持元模型,不支持存储和交换,也不支持执行。那么围绕着BPMN1.x的存储、交换和执行,必然会产生新的竞争,这次的主角换成了XPDL、BPEL和BPDM。
XPDL作为WfMC(工作流管理联盟)提出的流程定义语言规范,本身就是一个元模型,可以存储,并且具备执行语义。如今有超过80个的不同公司的产品使用XPDL来交换流程定义,同时也有一些厂商在自己提供的BPMN工具中使用了XPDL作为交换和存储格式。
为了抗衡XPDL,OASIS组织(包括几个大的平台公司,Microsoft、 BEA、 IBM、 SAP 、Sun、Oracle)开发了BPEL规范。但BPMN到BPEL的转换存在着先天上的缺陷,原因是BPMN是基于图的,而BPEL是基于块的。这个缺陷导致有些BPMN建模的流程无法映射到BPEL,两者的双向工程更是存在问题。这个缺陷成为人们反复诟病的对象。许多支持BPEL的产品为了解决这一问题,不得不在用户建模时做出种种限制,让用户绘制不出无法转换的模型。
而BPDM(业务流程定义元模型)则是OMG组织自己提出来解决BPMN存储和交换问题的规范。于2007年7月形成初稿,2008年7月被OMG最终采用。BPDM是一个标准的概念定义,用来表达业务流程模型。元模型定义了用来交换的概念,关系和场景,可以使得不同的建模工具所建模出来的流程模型进行交换。BPDM超越了BPMN和BPEL所定义的业务流程建模的要素,它定义了编排和编制。
三者的竞争关系似乎还将继续,但,BPMN2.0出现了。BPMN2.0相比BPMN1.x,最重要的变化在于其定义了流程的元模型和执行语义,即它自己解决了存储、交换和执行的问题,
BPMN由单纯的业务建模重新回归了它的本源,即作为一个对业务人员友好的标准流程执行语言的图形化前端
。BPMN2.0一出手,竞争就结束了,XPDL、BPEL和BPDM各自准备回家钓鱼。看起来胜利者似乎是BPMN,但看看BPMN2.0的领导者,就会发现最后的胜利者还是IBM,Oracle和SAP这些大厂商们,他们提交的草案明确要赋予BPMN2.0以执行语义,这迫使BPDM团队撤回了其提交,并将他们的提议与BPDM团队想法合并,这就是BPMN2.0最后内容的由来。
BPMN官网:
http://www.bpmn.org
2 BPMN的例子
本章使用一个简单的订单处理的业务流程为例,简要的说明BPMN的作用。
2.1 一个简单的订单流程
企业收到订单后,检查购买者的信用卡,执行订单,提供发票。如下图所示,圆形表示事件,第一个元件表示开始事件,最后一个元件表示结束事件,圆角矩形表示一个任务(task/activity),带箭头的实现表示顺序流(sequenceFlow)
2.2 异常和结束状态
上图只描述了正常的情况。信用卡过期,仓库无库存如何处理?所以业务流程图中应该新增其它异常分支。在BPMN中,使用菱形表示网关(gateway),用来控制流程中的流向。注意图中包含了三个结束事件,每个结束事件表示不同的结束状态。
2.3 泳道(swimlane)和执行者(performer)
泳道用来指明任务的执行者。如下图所示,销售人员接受订单,仓库执行执行订单,财务处理发票。注意不是所有的任务都会有执行者(更精确的说,只有user task才有执行者)。
2.4 子流程
执行订单是一个子流程,子流程必须有开始事件和结束事件,子流程内部的元件禁止和外部的元件直连,只能作为一个整体与父流程的元件相连接。
3 BPMN2.0中的基础元件
除了事件触发的行为,你几乎可以使用的本章节的元件创建所有的业务流程。
3.1 Activity
一个activity表示一份待完成的任务或工作,用圆角矩形表示。分为任务(task)和子流程(subprocess)。
3.1.1 任务
一个任务表示工作需要被外部实体完成,比如人工或自动服务。 任务的类型显示在矩形的左上角,用小图标区别。根据任务的类型,引擎会执行不同的功能。
人工任务(User Task)
人工任务表示需要人来执行的任务,有一个输入和一个输出。
相关的XML定义:
服务任务(Service Task)
Service Task是一个自动活动,它会调用一些服务, 比如web service,java service等等,必须有一个输入和一个输出。
相关的XML定义:
脚本任务(Script Task)
脚本任务时一个自动活动,当到达这个任务的时候流程引擎会执行一个脚本。必须有一个输入和一个输出。支持的脚本语言有Java,JavScript,XPath1.0,mvel。如下图所示。
相关的XML定义:
脚本任务与服务任务的区别。服务任务一般用来处理和外部服务之间的交互。脚本任务只用来执行一些简单的逻辑。
规则任务(Business Rule Task)
规则任务用来执行使用Drools定义的规则集,规则集通过ruleflow-group来识别。
Drools规则的定义
3.1.2 子流程(subprocess)
子流程表示多个activity的组合。子流程内部的元件禁止和外部的元件直连,只能作为一个整体与父流程的元件相连接。如下图所示。
jBPM中支持的子流程如下图。
3.2 网关(gateway)
网关用来控制业务流程走向。分为如下四个之类,每个类型网关都需要设置gateway direction属性。下面的值可以使用:
converging:网关必须拥有多个进入顺序流, 但是只能有一个外出顺序流。
diverging:网关必须拥有一个进入顺序流, 和多个外出顺序流。
3.2.1
唯一网关(Exclusive Gateway)
用一个内部包含X的菱形表示。
diverging
表示只有一个外向顺序流被执行。在执行时,必须确保至少一个外向顺序流上面的条件为true。
converging
每个入口顺序流执行完成之后,都会触发一次唯一网关后面的顺序流。
3.2.2
并行网关(Parallel Gateway)
Diverging
表示多个外向顺心流会同时执行。
Converging
等待所有的入口顺序流完成之后,才会触发出口顺序流。
3.2.3
包含网关(Inclusive Gateway)
Diverging
只要外向顺心流上面的条件为true,则都会被执行。
Converging
等待所有的active入口顺序流完成之后,才会触发出口顺序流。
3.3 开始事件
表示业务流程是如何开始的。用一个细线圆表示,园中的图标表示触发的方式。
空启动事件: 表示没有指明触发者。子流程必须有一个空启动事件。
消息启动事件: 由外部消息来触发流程的执行。
定时器启动事件: 由时间来触发流程的执行。
3.4 结束事件
使用粗线圆表示,意味着流程的一个顺序流的结束。和启动事件不一样,在一个流程中出现多个结束事件是非常常见的。
空结束事件
表示流程中一个路径的结束,不返回任何结果。
消息结束事件
表示流程中一个路径的结束,并发送一个消息。
Terminate结束事件
结束整个流程的执行,即使有并行路径在执行。
3.5 顺序流(Sequence Flow)
表示顺序执行的顺序,用实线箭头表达。
3.6 数据(Data Object)
Data Object可以理解为流程实例的局部临时变量,流程实例结束后Data Object也被释放。
DevOps ( Development和 Operations的组合词)是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops)"之间沟通合作的文化、运动或惯例。.透过自动化"软件交付"和"架构变更"的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。传统的软件组织将开发、IT运维和 质量保障 设为各自分离的部门,在这种环境下如何采用新的开发方法(例如 敏捷软件开发 ),是一个重要的课题。
1.1 一般
对象管理组(OMG)已开发了标准的业务流程模型和表示法(
BPMN
)。
BPMN
的主要目标是提供一种易于理解的符
号,从创建流程初始草稿的业务分析人员到负责实施将执行那些流程的技术的技术开发人员,最后是所有业务用
户,给将要管理和监视这些流程的业务人员。因此,
BPMN
为业务流程设计和流程实施之间的差距创建了标准化的
另一个目标(但同样重要)是确保可以使用面向业务的符号来可视化设计用于执行业务流程的XML语言,例如
WSBPEL(Web服务业务流程执行语言) 。
该国际标准代表了业务建模社区中最佳实践的融合,以定义协作图,流程图和编排图的符号和语义。面对许多不
同的建模表示法和观点,
BPMN
的目的是标准化业务流程模型和表示法。这样,
BPMN
将提供一种将流程信息传达给
其他业务用户,流程实施者,客户和供应商的简单方法。
OMG的成员带来了许多现有符号的专业知识和经验,并试图将这些不同符号的最佳思想整合为一个标准符号。审查
过的其他符号或方法的示例是UML活动图, UML EDOC业务流程, IDEF, ebXML BPSS,活动决策流程(ADF)图,
RosettaNet, LOVeM和事件过程链(EPC) 。
import asyncio
from
bpmn
_model import
Bpmn
Model
m =
Bpmn
Model ( "models/model_01.
bpmn
" )
p1 = m . run ( "1" , { "a" : 1 })
p2 = m . run ( "2" , { "a" : 2 })
run = [ p1 , p2 ]
def run_serial ():
for i , p in enumerate ( run ):
print ( f"Running process { i + 1 } \n -------------
BPMN
2.0
相对于
BPMN
1.0最大的区别就是定义、规范了流程引擎的执行语义和格式,利用标准的图元描述真实的业务发生过程,保证相同的流程在不同的流程引擎中得到一致的执行结果。在
2.0
的这套标准中,主要对流程执行定义了三类基本要素,分别为Activities(活动)、Gateways(网关)、Events(事件)
BPMN
与Activity
BPMN
2.0
(Business Process Model and Notation)
是一套业务流程模型与符号建模标准
精准的执行语义来描述元素的操作
BPMN
的介绍Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的
BPMN
2.0
标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。那什么是BPM和
BPMN
呢?BPM:即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法,常见商业管理教育如EMBA、MBA...
这些操作,是对activiti入门之后的扩展,先了解了activiti的七大Service与23张表,理解这里会非常的迅速。java代码package com.activiti;import org.activiti.
bpmn
.
Bpmn
AutoLayout;import org.activiti.
bpmn
.converter.
Bpmn
XMLConverter;import org.activiti...
BPMN
(Business Process Modeling Notation)是一种流程建模的通用和标准语言,用来绘制业务流程图,以便更好地让各部门之间理解业务流程和相互关系,旨在促进业务流程的沟通和理解。
BPMN
2.0
只要了解以下三个基本建模元素,就能掌握
BPMN
2.0
的核心。一、基本概念介绍1. 事件 (Event)三种主要类型的事件:1. 开始 - 表示一个流程...
三点估算是估算活动活动持续时间过程的工具,它是通过活动最可能、最悲观、最乐观三个时间维度,通过设置权重,计算出活动时间的期望值。其公式如下所示:
Te=O+P+4M6T_e = \frac{O+P+4M}6Te=6O+P+4M
其中TeT_eTe表示活动时间期望值,O表示最乐观时间,P表示最悲观时间,M表示最可能时间。
另外,还有一个名词,叫做标准差(σ\sigmaσ), 它一般以 正态分布的方式表示,见下图。
即±\pm± 1个σ\sigmaσ的面积为68.3%;
±\pm±
TT:数据收集(头脑风暴和名义小组、访谈、核对单用作提醒、德尔菲技术-匿名状态专家回答问卷多轮一致)、数据分析(根本原因分析5why法、假设条件和制约因素分析、SWOT分析战略相关拓宽识别风险的范围)、提示清单(可以用RBS底层的风险类别作为提示清单,PESTLE、TECOP、VUCA)机会应对策略:上报(范围外,权限外)、开拓(确保机会实现)、分享(第三方)、提高(概率和影响提高)、接受(乐以利用,不主动追求)(文本已识别风险的清单、潜在风险责任人、应对清单、所有与风险相关的内容持续更新进来)、