天天看点

BPMN基础元素及任务类型01 BPMN定义02 BPMN基础元素类别03 BPMN中的任务TASK

01 BPMN定义

BPMN(Business Process Modeling Notation,即业务流程建模符号),是一种流程建模的通用和标准语言,用来绘制业务流程图,以便更好地让各部门之间理解业务流程和相互关系。

02 BPMN基础元素类别

BPMN 2.0 只要充分了解以下四类基础元素:

  1. 流对象
  2. 数据
  3. 连接对象
  4. 泳道

1、流对象(Flow Objects):是定义业务流程的主要图形元素,包括三种:事件、活动、网关

事件(Events):指的是在业务流程的运行过程中发生的事情,分为:

  • 开始:表示一个流程的开始
  • 中间:发生的开始和结束事件之间,影响处理的流程
  • 结束:表示该过程结束

活动(Activities):包括任务和子流程两类。子流程在图形的下方中间外加一个小加号(+)来区分。

网关(Gateways):用于表示流程的分支与合并。

  • 排他网关:只有一条路径会被选择
  • 并行网关:所有路径会被同时选择
  • 包容网关:可以同时执行多条线路,也可以在网关上设置条件
  • 事件网关:专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。
    BPMN基础元素及任务类型01 BPMN定义02 BPMN基础元素类别03 BPMN中的任务TASK

2、数据(Data):数据主要通过四种元素表示

  • 数据对象(Data Objects)
  • 数据输入(Data Inputs)
  • 数据输出(Data Outputs)
  • 数据存储(Data Stores)

3、连接对象(Connecting Objects):流对象彼此互相连接或者连接到其他信息的方法主要有三种

顺序流:用一个带实心箭头的实心线表示,用于指定活动执行的顺序

信息流:用一条带箭头的虚线表示,用于描述两个独立的业务参与者(业务实体/业务角色)之间发送和接受的消息流动

关联:用一根带有线箭头的点线表示,用于将相关的数据、文本和其他人工信息与流对象联系起来。用于展示活动的输入和输出

4、泳道(Swimlanes):通过泳道对主要的建模元素进行分组,将活动划分到不同的可视化类别中来描述由不同的参与者的责任与职责。

03 BPMN中的任务TASK

1.任务(Task)

任务是一个流程(Process)中的关键原子级的活动。Task,是用来指代一个由人或计算设备来完成的活动,这些活动通过流程组合在一起而发挥效用。 

 在BPMN中一个Task使用一个单实线圆角矩形来表示。在Task上可以设置一个Marker(记号),Marker的指代作用可以 在后面具体讲解中理解。Marker有三种类型:1)Loop Marker 2) Multiple Instance Marker 3) Compensation Marker.

1) Loop Marker

也被称为Standard Loop Marker,如果指定了该Marker,该任务就会通过使用一个布尔表达式来做出是否再次执行本任务的决定,布尔表达式的检测分为执行任务前和任务后检测,任务前检查相当于while循环,任务后检查相当于until循环。

2) Multiple Instance Marker

也被称为MultipleInstance Loop Marker,这个Marker对应着一种编程结构for each,但是多实例Marker使得一个Task将成为多实例任务,多实例任务是最复杂的。

首先一个多实例任务,会有一个表达式,表达式的返回值是一个整数,这个整数标识当前任务还可再生成的实例数目,每个实例都可以用来去完成一个任务。

一个多实例任务,分为两种类型,Sequential和Parallel。Sequential任务类似于Standard Loop类型的Task,所有的待执行实例,会一个接一个地去执行。

而Parallel则将所有的待执行实例,并排展开,同时执行,而通过判断条件来进行实例调用,而实例的调用结果和当前Task是否标记为完成还有着复杂的关系,关于多实例任务,还是应该有一个专门的文章来介绍。

3) Compensation Marker

compenstation marker标志一个compensation task,通常使用在发生异常的状况下,如下图这个例子,当向买者收费发生异常时,就需要调用一个补偿任务,将用户打来的款再支付给用户。

2. Service Task

顾名思义, Service Task是通过服务(可以是Web服务,也可以是自动化程序)来完成的任务。Service Task有三个重要的属性:

  1. InMessage - 只有一个输入消息,虽然可以有多个输入的消息流,但是对于Service Task的每一个实例,都只能有一个消息流(Message Flow)能够设置当前的输入消息,另外有一点要注意,就是一个Service Task要能够接收消息,必须先定义相应的InputSet。
  2. OutMessage  - 只有一个输出消息,当有多个输出流(Message Flow)时,在当前Task实例完成时,会向所有的输出流发送消息。
  3. Implementation - 表示实现当前这个服务的实现技术,默认为Web Service,即通常为使用Web Service来完成输入消息的接收,并负责返回输出消息。
  4. 总结:输入多选一,输出全包揽。

3. Receive Task

Receive Task是用来等待外部Participant消息的任务,一旦接收到外部消息该任务就标记为完成状态,很多时候,一个流程都会以一个Receive Task作为开始,通过接收一条外部消息来启动流程,它可以看做是一种特殊的Service Task,它只允许接收消息,而不允许发送消息,Receive Task有两条重要属性:

  1. InMessage - 在规范中为Message,用来指代输入消息,当有多个输入流时,只要有一流到达,当前实例任务即完成。
  2. Implementation - 同Service Task,指定接收的当前消息的实现体,如一个Web Service。

4. Send Task

Send Task是一个用来向外部Participant发送消息的任务,一旦消息发送出去,该任务就完成了。同Receive Task类似,该任务,只能发送消息,并有一个实现体,如Web Service来负责发送该消息。

5. 其他Task

除了上面三个重要的Task类型,在BPMN中还有:

  1. User Task - 需要人在计算机的帮助下完成的任务,但UserTask的属性都与Web Service相同,两者的区别在于此处的UserTask并不意图直接由Web Serivce等来执行,而是类似文档性地指出人是在什么的帮助下完成任务的,如果使用引擎执行这里,这里还有尚待解决的新问题。
  2. Script Task - 通过引擎可识别的脚本语言来进行自动化操作。
  3. Manual Task - 纯人工任务,没有计算机的参与。
  4. Reference Task - 相当于其他Task的引用。