BPMN2.0解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BPMN2.0解析相关的知识,希望对你有一定的参考价值。
参考技术A BPMN(Business Process Model and Notation),业务流程建模和标注。 Notation是BPMN的核心,即使用图形来表达业务流程。另外,BPMN是由OMG组织维护的一个公开的标准,与任何特定商业组织或工具是没有关系,无需为此付费。BPMN和传统的流程图的区别如下:
MN是一个正式的规范,各种图标、元件是有准确的含义和使用规范。
BPMN可以描述基于事件触发的行为,比如响应超时、外部系统无法提供服务等。
BPMN 标准发展版本历史如下。BPMN2.0在1.x基础上新增了元模型、存储、交互、执行。
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
使用一个简单的订单处理的业务流程为例,简要的说明BPMN的作用。
基本形状:
用户任务(User Task)
用户任务表示需要人来执行的任务,有一个输入和一个输出。
服务任务(Service Task)
Service Task是一个自动活动,它会调用一些服务, 比如web service,java service等等,必须有一个输入和一个输出。
脚本任务(Script Task)
脚本任务时一个自动活动,当到达这个任务的时候流程引擎会执行一个脚本。必须有一个输入和一个输出。支持的脚本语言有Java,JavScript,XPath1.0,mvel。
脚本任务与服务任务的区别。服务任务一般用来处理和外部服务之间的交互。脚本任务只用来执行一些简单的逻辑。
规则任务(Business Rule Task)
规则任务用来执行使用Drools定义的规则集,规则集通过ruleflow-group来识别。
唯一网关(Exclusive Gateway)
用一个内部包含X的菱形表示。
Diverging(发散)
表示只有一个外向顺序流被执行。在执行时,必须确保至少一个外向顺序流上面的条件为true。
Converging(会聚)
每个入口顺序流执行完成之后,都会触发一次唯一网关后面的顺序流。
并行网关(Parallel Gateway)
Diverging(发散)
表示多个外向顺心流会同时执行。
Converging(会聚)
等待所有的入口顺序流完成之后,才会触发出口顺序流。
包含网关(Inclusive Gateway)
Diverging(发散)
只要外向顺心流上面的条件为true,则都会被执行。
Converging(会聚)
等待所有的active入口顺序流完成之后,才会触发出口顺序流。
空启动事件: 表示没有指明触发者。子流程必须有一个空启动事件。
消息启动事件: 由外部消息来触发流程的执行。
定时器启动事件: 由时间来触发流程的执行。
结束事件
使用粗线圆表示,意味着流程的一个顺序流的结束。和启动事件不一样,在一个流程中出现多个结束事件是非常常见的。
空结束事件
表示流程中一个路径的结束,不返回任何结果。
消息结束事件
表示流程中一个路径的结束,并发送一个消息。
Terminate结束事件
结束整个流程的执行,即使有并行路径在执行。
artifact表示没有执行语义,也就是说对流程的执行没有任何影响。BPMN中有两种artifact,注释和分组。
注释(Text Annotation)
用于对流程图中的元件进行解释说明。
分组(Group)
用带虚线的矩形框表达,本质上没有任何执行相关的含义。
初学者的BPMN教程 - BPMN for Beginners
本教程介绍了BPMN 2.0的基本功能。BPMN代表业务流程建模符号,是OMG维护的公共标准。它描述了业务流程图分析和业务用户可用于为业务流程建模并支持流程交互,异常处理,薪酬语义等的业务友好型流程图。
BPMN它被商业和开源BPMS工具供应商广泛接受。它具有很强的适应性,可用于捕捉从抽象过程概述到详细过程流程到实施准备过程的所有内容。BPMN的一个主要价值主张除了是图表标准外,还有图表背后的精确语义。形状,符号(也称为标记),边界,BPMN图元素的位置以及它们的属性具有明确定义的含义,并且必须由所有工具以相同的方式进行解释。
尽管BPMN 1.1全面地处理了过程建模符号,但它实质上缺少解决交换格式(用于图交换)的问题。这导致实施供应商采用不同的标准(BPEL,XPDL或JBPM的JPDL)来存储BPMN流程模型,这不仅导致跨工具的可移植性损失,而且使各个利益相关者之间的沟通变得困难。
这里我们将总结这些年出现的不同标准的简短描述:
JPDL:
- 分析师和开发人员为导向。
- 与jBPM和Java紧密相连。
- 允许定制流程路由逻辑和一大组内置节点。
- 直观的XML语言。
BPEL:
- 基于文本的(XML)业务流程建模语言,包括精确的执行语义。
- 用于编排Web服务。
- 不包含表示流程图的图形方面的元素。
XPDL:
- 旨在交换流程定义,包括图形和工作流业务流程的语义。
- 顾名思义,它包含用于保存图形信息的元素,例如节点的X和Y位置。
- 包含以及可用于运行流程的可执行方面。
BPMN的愿景是为符号,元模型和交换制定单一规范。此外,BPMN 2.0已扩展为包括流程模型的编排和编排。
业务流程图是由描述业务流程的一组图形元素组成的简单图。BPD有四个主要元素:
- 流对象:表示业务流程图的核心要素。
- 连接对象:用于连接BPMN核心对象
- 泳道:是在流程图上组织活动和责任的机制。
- 工件:允许流程设计者扩展基本BPMN表示法,以在流程图中包含有关流程的附加信息
正如我们所说的,流对象是表示业务流程图(BPD)的核心元素的形状,其中包括:
- 活动:是在过程中执行的任何工作。
- 事件:在业务过程中发生的任何事情。
- 网关:用于控制流程的流程。
下图描述了一个包含开始事件,活动(任务),一些网关和结束事件的示例流程:
BPMN和传统流程图之间最大的区别在于对事件的支持。事件是发生了什么事情的信号,BPMN让你说出过程应该如何响应。
这里重要的定义!
事件可以发生在流程的开始(开始事件)或结束(结束事件)或中间(中间)。此外,一些活动可能发生在活动的边界上。这表明事件可以中断活动,并将序列流从“正常”流转移到另一个流。
下图描述了订购某些产品的过程,其中包括a开始事件(消息事件),中间错误事件,边界计时器事件和两个结束事件。
事件可以捕获(当接收触发器被触发时)或抛出(向触发器发送触发器)类型。
开始事件始终是捕获类型,结束事件始终是抛出类型。中间事件可以是throw或catch类型。BPMN 2.0中有各种各样的事件。事件类型列出如下:
消息事件 | 发送或接收消息。 | |
计时器事件 | 总是捕捉类型并用于表示等待特定时间条件评估为真。 | |
信号事件 | 用于发布和订阅信号。 | |
错误事件 | 用于异常处理,它们只能在过程结束时发生。 | |
终止事件 | 用于终止进程,并且只能在进程结束时发生。 | |
有条件的事件 | 用于基于规则的触发器。 | |
升级事件 | 在BPMN 2.0中新引入了处理升级条件。 | |
补偿事件 | 介绍到处理过程中的赔偿。 |
根据事件的组合,触发事件的阶段(开始,中间,边界)以及事件是否中断活动,事件可以用不同的图形符号组合表示。
消息事件
消息事件是引用已命名消息的事件。消息具有名称和有效负载,并且始终指向单个接收者。
消息的图形表示可能因消息发送/接收的阶段而异。
开始:消息从参与者到达并触发流程的开始。
中间事件:消息从参与者到达并触发事件。这会导致进程继续等待消息,或者更改异常处理流。当用于“捕捉”消息时,事件标记将被填充。当用于“扔”信息时,事件标记将被填充。
中级边界事件:消息从参与者到达并触发事件。如果消息事件附加到Activity的边界,它将在触发时将Normal Flow改变为Exception Flow。
对于中断与之相关的活动的消息事件,事件的边界是固定的。
对于不中断附加到其中的活动的消息事件,该事件的边界是虚线的。
结束:这种类型的结束表示在过程结束时将消息发送给参与者。
计时器事件
定时器事件是由定义的定时器触发的事件。它们可以用作开始事件,中间事件或边界事件。
开始:可以设置特定的时间日期或特定的周期(例如,每天早上9点),以触发流程的开始。
中间事件:可以设置特定的时间日期或特定周期(例如,每周二上午9点),以触发事件。如果在主要流程中使用,则它用作延迟机制。如果用于异常处理,它将把正常流程改变为异常流程。
中间边界:可以设置特定的时间日期或特定周期(例如,每天早上9点),以触发事件。如果一个定时器事件附加到一个Activity的边界上,它将在正常流程被触发时变成一个异常流程。
对于中断其所附的活动的计时器事件,事件的边界是固定的。对于不中断附加到其中的活动的计时器事件,该事件的边界是虚线的。
信号事件
这种类型的事件用于发送或接收信号。信号用于过程组件内的一般通信。一个BPMN信号与任何可能有兴趣注意并随后作出反应的人都会发射到天空中的信号耀斑类似。因此,有一个信号源,但没有具体的预期目标。这与具有特定源和特定目标(可以是实体或抽象角色)的BPMN消息不同。
开始:信号到达,已从另一个进程广播并触发进程启动。请注意,信号不是消息,它具有消息的特定目标。
中间事件:如果事件是正常流程的一部分,则此类中间事件可以发送或接收信号。信号事件可能被中间捕获信号事件捕获。
中间边界:当附加到活动边界时,信号在被触发时将正常流程改变为异常流程。Signal事件与Error事件的不同之处在于Signal为中断活动(例如成功完成另一个活动)定义了一个更一般的非错误条件,并且其范围比错误事件的范围更大。
对于中断与之相关的活动的信号事件,事件的边界是固定的。对于不中断附加到其中的活动的信号事件,该事件的边界是虚线的。
错误:这种类型的结束表示当到达结束时将会广播信号
错误事件
开始:错误开始事件只允许触发一个在线事件子过程。鉴于错误的本质,具有错误触发器的事件子过程将始终中断其包含的过程。
中间边界:中间错误捕获事件只能附加到活动的边界。请注意,错误事件始终中断与其相关的活动,即没有此事件的非中断版本。事件的边界因此总是稳固的。
结束:这种类型的结束表示应该生成一个命名的错误。错误将由具有相同ErrorCode的错误中间事件捕获,或者在最近的封闭父活动(分层)边界上没有ErrorCode。
补偿事件
补偿是“撤销”行为效果的手段。例如,假设您已经在流程开始时预订了一场演出门票,那么补偿可能会取消预订。
开始:补偿开始事件只允许触发在线补偿事件子过程。发生补偿时触发此类事件。此事件不会中断流程,因为流程必须在触发此事件之前完成。
中级:用于补偿处理 - 既激活又执行补偿。
在正常流程中使用时,此中间事件表示需要补偿。因此,它用于“抛出”补偿事件,并且必须填写事件标记。如果事件确定一项活动,那么这是活动(而不是其他)将被补偿。否则,薪酬将广播给在流程实例中完成的所有活动,包括顶级流程和所有子流程。按照完成活动的相反顺序,每项已完成的活动都将得到补偿。要获得补偿,活动必须在其边界附加补偿中间事件。
边界:补偿边界事件与其他边界事件有不同的激活策略。其他边界事件,例如信号边界事件,当它们所连接的活动开始时被激活。补偿边界在附加活动成功完成时激活。此时,创建相应的补偿事件订阅。
当附加到Activity的边界时,此事件用于“捕获”补偿事件,因此事件标记必须未填充。该活动将通过针对该活动提出的报酬来触发。当事件被触发时,与事件相关的补偿活动将被执行。
请注意,其他事件的中断和非中断方面不适用于补偿事件。补偿只能在他们所附的活动完成后触发。
因此他们不能中断活动。事件的边界总是稳固的。
结束:这种类型的结束表示补偿是必要的。如果一项活动得到确定,那么这就是将要得到补偿的活动。否则,在流程内完成的所有活动(从顶级流程开始并包括所有子流程)都将按照相反的顺序进行补偿。要获得补偿,活动必须在其边界附加补偿中间事件。
有条件的事件
真实世界的业务流程往往体现出复杂的决策。条件事件因此可用于过程中包含的基于规则的触发器。
开始:当“标准普尔500自开盘后变化超过10%”或“温度超过300°C”等规则条件变为真时,触发此类事件。事件的ConditionExpression必须变为false,然后才能再次触发Event。
中级:这种类型的事件在规则条件变为真时触发。
边界:这种类型的事件在规则条件变为真时触发。条件是一种表达。如果条件事件附加到Activity的边界,它将在触发时将正常流程更改为异常流程。
Visual Paradigm - DIY實例
描述:此業務流程圖示例說明了業務部門與人力資源部門的流程,首先報告職位空缺並發布職位廣告,其中包括流量,任務,開始和結束事件以及網關。使用此BPMN圖表模板開始構建您自己的。自定義BPMN圖以反映您的組織。點擊使用此模板開始。
繪製圖
以上是关于BPMN2.0解析的主要内容,如果未能解决你的问题,请参考以下文章