BPMN基本元素
BPMN这点事-BPMN基本元素(上)10.1.1 基本元素什么是BPMN基本元素?我们为什么要从BPMN元素中界定出一个基本元素的子集?BPMN基本元素是我们认为可以进行实际建模的BPMN元素的最小子集,使用BPMN基本元素我们可以创建非常简单的流程(编制)和协作模型,这些元素非常容易学习,对于没有技术背景的业务人员也很容易理解,适合草图和非正式的沟通。BPMN基
10.1.1 基本元素
什么是BPMN基本元素?我们为什么要从BPMN元素中界定出一个基本元素的子集?BPMN基本元素是我们认为可以进行实际建模的BPMN元素的最小子集,使用BPMN基本元素我们可以创建非常简单的流程(编制)和协作模型,这些元素非常容易学习,对于没有技术背景的业务人员也很容易理解,适合草图和非正式的沟通。
BPMN基本元素包括了这些元素,如下图所示:
- 泳道:池和道;
- 三种连接对象:序列流、消息流和关联;
- 一种活动:任务(Task),其中包括了子流程任务(Sub-ProcessTask);
- 两种事件:普通开始事件(NoneStart Event)和普通结束事件(None End Event);
- 两种网关:排他网关(Exclusive)和并发网关(Parallel);
- 一种人工制造物:附注。
图10‑11BPMN的基本元素
在下面对BPMN基本元素的介绍里,我们分为了两部分,第一部分我们从整体上了解BPMN元素几个大的分类:泳道、流对象、连接对象和人工制造物,其中也包括了对流程执行语义的说明;在第二部分里,我们则具体了解流对象的分类:事件、活动和网关,我们只介绍其中的基本元素。
10.1.1.1 泳道、流对象、连接对象、人工制造物和流程执行语义
泳道
我们使用泳道来区分不同部门或者不同参与者的功能和职责。泳道包含两种类别:池和道。我们使用池来表示流程的参与者,应用在公开流程和协作模型里(还记得我们BPMN的三种流程模型吗?如果没有印象了,它们就在10.2小节)。
池与池之间的交互只能使用消息流表示。
图10‑12池表示流程的参与者
我们使用道对池内的活动进行分组,我们可以根据活动所属的部门或办理所需的职责(角色)来对活动进行分组。
图10‑13使用道表示不同的部门
图10‑14使用道表示不同的角色
如果流程是私有流程并且活动没有分组的需要,那么通常我们会省略池。
图10‑15在活动没有分组的私有流程里忽略池
流对象
流对象是定义业务流程的主要图形元素。它进一步细分为三个大的类别,分别是事件、活动和网关。具体到事件、活动和网关里,流对象有很多的类别,BPMN元素的复杂性体现在流对象的众多类别上。
- 事件:发生在流程执行过程中的事情;
- 活动:在流程执行过程中执行的工作;
- 网关:控制流程的分支和聚合。
图10‑16流程中的流对象
连接对象
连接对象用来把各个流对象或流对象与其他信息连接起来,它分为四种类别:顺序流、消息流、关联和数据关联。
- 顺序流:表示流对象的前后执行顺序;
- 消息流:表示公开流程或协作模型里参与者之间的消息、交互;
- 关联:为流程中的元素关联信息或数据;
- 数据关联:表示数据在流程、活动和数据对象之间的传递。
图10‑17流程中的连接对象
图10‑18数据关联
人工制造物
人工制造物用以给流程附加一些额外的信息,不影响流程的流转,它分为两种类别:组和附注。
- 组:对元素进行分类;
- 附注:给元素附加信息,便于阅读。
流程执行语义
我们可以将流程的执行看作是Token的流转,Token从一个源流对象经过顺序流流转到一个目标流对象,当一个流对象拿到一个Token时即开始执行,当执行完成后再把Token通过顺序流流转出去。类似于我们小时候玩的击鼓传花游戏,拿到花(Token)才能行动。
图10‑19把流程执行看成是Token的流转
每次流程接受到一个新的开始事件,就会启动一个新的案例(流程实例)开始执行。一个流程在同一时间可能有多个案例正在执行。
图10‑20案例
10.1.1.1 事件、活动和网关
事件
我们将发生在流程执行过程中的事情称为事件。事件有三种类型:
- 开始事件:触发流程的执行;
- 即时事件:在开始事件和结束事件之间发生的事件,会影响流程的流转,但不会启动或直接终止流程的执行;
- 结束事件:表明流程执行结束。
图10‑21事件的三种类型
对一个事件来说,通常会有产生该事件的原因(起因)和该事件所产生的影响(结果),例如一个消息的到来触发了一个事件并导致流程的启动,这个开始事件的起因是消息,它被称为消息开始事件,流程在结束时发送了一个消息,这个结束事件的结果是发送了消息,它被称为消息结束事件。我们使用不同的标识来区分事件的不同起因和结果。我们也使用事件不同的起因和结果来分类事件,完整的事件类型如下图所示:
图10‑22完整的事件类型
在基本元素里我们只关注两种类型的事件:普通开始事件和普通结束事件。普通开始事件没有指定事件的起因,它只是产生Token,触发流程的执行;普通结束事件没有指定事件的结果,它消费掉Token,结束流程的执行。共有10种类型的开始事件和9种类型的结束事件,在后续的小节中我们会逐一讨论到。
图10‑23普通开始事件和普通结束事件
作为一个其他开始事件的例子,我们接受一个邮件消息并开始在线的下订单任务,这个开始事件的起因是消息,所以称为消息开始事件。
图10‑24消息开始事件
活动
我们将在流程执行过程中执行的工作称为活动。活动可以是原子的,也可以是非原子的(复合的),活动分为两类:任务(原子的)和子流程(复合的)。任务是流程模型中最小工作单元,不能继续分解,子流程则能继续分解为一系列的子活动。在流程模型里,子流程可以展开也可以收起。
图10‑25任务和子流程
一个活动可能会有零到多个输入顺序流,也会有零到多个输出顺序流。需要记住的是,只要任何一个输入顺序流传入Token,活动都会立即执行,而执行完毕后如果有多个输出顺序流,它则会产生多个Token,每个输出顺序流传递一个(相当于并发)。
网关
网关控制流程的分支和聚合。有七种网关,各种类型网关的分裂和聚合行为由下面三种因素控制:
- 输入顺序流和输出顺序流上设定的条件;
- 输出顺序流上的事件;
- 网关自身上设定的条件。
在基本元素里我们关注两种类型的网关:排他网关和并发网关。
排他网关在分裂时,只会选择一个输出顺序流传递Token,排他网关在聚合时,任何一个输入顺序流传入Token,网关都会向后传递,不会对Token进行同步。我们使用“x”在网关内部标示出这是一个排他网关,默认情况下,我们也可以忽略标示。
图10‑26排他网关
并发网关在分裂时,会产生多个Token,每个输出顺序流传递一个(并发),并发网关在聚合时,会对所有输入顺序流的Token进行同步,只到所有输入顺序流的Token都到达后才会向后传递Token。我们使用“+”在网关内部标示出这是一个并发网关。
图10‑27并发网关
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)