【11】Camunda7-BPMN2.0

BPMN2.0

Business Process Model and Notation (BPMN 2.0) 作为一种流程建模的通用图形符号或标准语言,用于表示复杂流程,它由非营利性对象管理小组(OMG)维护,并被全球众多组织使用,我们现在了解的绝大多少流程引擎都是支持BPMN协议的。BPMN 可视化、图形化的特性非常便利于团队之间的协作,毕竟按一些研究者的说法,人脑处理视觉的速度是文本的 15.4 倍。

BPMN截止目前主要有2个版本:

BPMN 1.0 规范由标准组织BPMI(后并入到OMG)于2004年5月发布;
BPMN 2.0 标准由OMG于2011年推出,如果对协议感兴趣,可以参考官方文档

图元

Camunda对于BPMN2.0的支持力度还是比较好的,但也不是支持全量的BPMN2.0图元,其所支持的类型可以通过官网说明了解,如下图橙色标记的就是Camunda支持的。

BPMN2.0主要包括四类基本元素:流对象、数据、连接对象、泳道。下面我们介绍一些常用的BPMN图元(也称为建模符号)。

事件(Event)

事件(Event)是指的是在业务流程的运行过程中发生的事情。事件主要包括

  • 开始事件:表示一个流程的开始
  • 中间事件:在开始和结束事件之间,可以影响业务流程,但不会开启或直接终止流程。中间事件可以用作任务的边界事件,在这种情况下,它们可以是中断的,也可以是非中断的。
  • 结束事件:表示该过程结束
开始事件

BPMN2.0定义了多种开始事件图元,例如:

None开始事件:没有定义任何触发条件,流程引擎不会自动开启该流程,需要人工或外部触发

消息开始事件:基于收到的某类消息,开启流程

定时开始事件:基于定时器触发,当符合某个时间条件时开启流程

条件开始事件:基于条件触发,当符合某些条件时开启流程

信号开始事件:基于信号触发,当收到某信号时开启流程

结束事件

同理,BPMN2.0也定义了很多结束事件图元,例如

None结束事件:空结束事件,流程完成或结束时,没有其他的动作

异常结束事件:流程结束时会抛出异常

中间事件

中间件事件可以分为捕获事件和抛出事件:

捕获事件:当流程执行到当前节点时,捕获事件会一直等待被触发,触发后才会继续执行后续逻辑

抛出事件:当流程执行到当前节点时,抛出事件会自动触发并抛出某些信息

活动(Activity)

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

任务

任务描述了用户完成业务目标需要逐个完成的动作。任务的本质其实是对业务流程中,可通过技术实现的业务行为的建模,任务是流程中的原子活动。

BPMN2.0定义了多种任务,Camunda实现了其中的一部分常用的任务。

服务任务(ServiceTask)

服务任务是常用的任务之一,其工作一般由软件自动执行并完成。顾名思义,服务任务是用于调用服务的,在camudna中,被调用的服务一般可以是委托代码、外部任务、脚本等。

用户任务(UserTask)

用户任务也是常用任务之一,其一般用于需要人为/人工参与的流程工作。用户任务的完成,需要用户输入,一般可以是点击某按钮(确认、审批、通过等),或是提供一组数据(审批信息等)用于确认。

发送任务(SendTask)

发送任务,其用于发送信息至外部参与者。

脚本任务(ScriptTask)

脚本任务与服务任务类似,都是一种自动化的活动,当流程执行到脚本任务时,将按照用户建模时配置的脚步代码,执行相应的脚本程序。

接受任务(ReceiveTask

接受任务,用于等待接收特点消息。当流程执行到该任务时,将提交持久化状态并持续处于等待状态,直到收到某指定消息后,才会触发流程的继续执行。

手工任务(ManualTask)

手工任务用于表示流程引擎外部的任务,它主要表示了不需要流程引擎处理、没有已知系统或用户可以处理的相关流程工作。对于流程引擎而言,手工任务最常见的作用是标注与传递流程,流程引擎执行到手工任务时会自动完成并继续执行。

业务规则任务(BusinessRuleTask)

业务规则任务主要是配合DMN引擎及其规则表使用的,关于它的详细内容后续分享DMN时再展开,大家如果感兴趣可以参考官网一些信息。

网关(Gateways)

网关,主要是用于描述流程的分支与合并。同上,我们介绍一些常见网关:

  • 排他网关:只会选择一个分支,是最常用的网关之一,类似if-else的语法
  • 并行网关:所有分支会被同时选择
  • 包容网关:可以同时执行多个分支,也可以在网关上设置条件
  • 事件网关:配合中间事件使用,专门用于捕获中间事件,根据不同的中间捕获事件可以有多个分支

连接对象(Connecting Objects

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

信息流:用于描述两个独立业务实体之间发送和接受的消息流,用一条带箭头的虚线表示

关联:用于将相关数据、文本和其他人工信息与流对象关联起来,常用于表示活动的输入和输出

泳道(Swimlanes

泳道的主要作用是:对主要的建模元素进行分组,将活动划分到不同的类别中来描述由不同的参与者的责任与职责。

  • 54
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值