1 概述
BPMN(Business Process Model & Notation),中文名为业务流程模型与符号。BPMN2.0是OMG(Object Management Group,对象管理组织)制定的,其主要目的是既给用户提供一套简单的、容易理解的机制,以便用户创建流程模型;又能使用户能很好的处理不同流程模型内在的复杂性。
BPMN2.0提供了五种不同的元素,分别是Flow Objects 流对象、Data 数据、Connecting Objects 连接对象、Artifacts 描述对象。
图1-1 BPMN2.0元素
五种不同元素中,在保持基本图形相似的前提下,BPMN2.0规范通过适当的改变每个图形元素的外观,增加额外的信息,来生成基本的图形元素的变种,以支持实际业务中的复杂性。
2 元素简介
2.1 流对象
流对象包括事件(Events),活动(Activities),网关(Gateways)。
2.1.1 事件
事件是BPMN2.0执行语义中一个非常重要的概念,是流程运行过程中发生的事情,这些事情的发生会影响到流程的运转。对每个事件而言,一般会包含两个要素,触发事件的原因与事件发生导致的结果。
事件有不同的分类方法,首先先看一张图:
图2-1 事件全览图
按照位置分类: 开始事件(Start)、中间事件(Intermediate)、结束事件(End)。通过事件控制器为系统添加辅助功能,如与其他业务系统集成、活动预警等。
事件的图像符号是圆形。其中空心圆表示开始事件,嵌套的圆表示中间事件,嵌套圆且两圆之间为阴影表示结束事件。如下图所示。
图2-2 事件的一般表示
依据触发方式不同分类:我们可以分为抛出事件(Throw),捕获事件(Catch),抛出事件是流程走到某一步主动发生的事件,捕获事件是流程定义好的触发器被触发的时候,流程就开始执行,捕获事件是被动型。
按照定义分类:分为消息(Message)事件,定时器(Timer)事件,升级(Escalation)事件,条件(Conditional)时间,链接(Link)事件,错误(Error)事件,取消(Cancel)事件,补偿(Compensation)事件,信号(Signal)事件,多重(Multiple)事件,并行(Parallel multiple)多重事件。
按照是否会中断流程运转分类:分为中断(Interrupting)事件和非中断(non-interrupting)事件。中断事件用圆实线表示,非中断事件用圆虚线表示。
图2-3 中断事件与非中断事件
2.1.2 活动
活动是流程中需要执行的任务,一个流程通常由多个活动组成。活动包含任务、子流程、事务、调用活动。
图2-4 活动全览图
任务是工作的基本单元,是参与者为了完成流程目标而一步一步完成的动作。任务的图标是一个方框,方框左上角不同图标表示不同的任务类型。和事件一样,任务也有多种,包括发送(Send Task)任务,接收(Receive Task)任务,用户(User Task)任务,手工(Manual Task)任务,业务规则(Busniess Rule Task)任务,服务(Service Task)任务。
名称 | 图标 | 描述 |
服务(Service Task)任务 | 服务任务被用作调用任务,工作一般由软件自动完成, | |
发送(Send Task)任务 | 发送任务用来给外部参与者发送消息 | |
接收(Receive Task)任务 | 接收任务等待特定的消息到来,在任务启动到该节点的时候停下来等待信号。当任务接收到信号的时候,该流程就会继续往下执行。 | |
用户(User Task)任务 | 需要人工参与的任务,比如审批需要领导签字确认 | |
手工(Manual Task)任务 | 定义流程引擎外部的任务,用来对那些需要人来完成的工作进行建模,引擎不需要知道他是系统还是 UI接口。 对引擎而言,手动任务是作为直接通过的活动处理的,流程执行到此会自动继续流程的执行 |
|
业务规则(Busniess Rule Task)任务 | 业务规则任务用于同步执行一个或更多规则。 |
图2-5 任务全览图
其他三个活动所用较少,本次暂不做详细介绍。
2.1.3 网关
网关用于表示流程的分支与合并,分为:
- 排他网关:只有一条路径会被选择
- 并行网关:所有路径会被同时选择
- 包容网关:可以同时执行多条线路,也可以在网关上设置条件
- 事件网关:专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。
图2-6 网关全览图
2.2 数据
数据有四种元素表示,数据对象(Data Objects),数据输入(Data Inputs),数据输出(Data Outputs),数据存储(Data Stores)。
图2-7 数据全览图
2.3 连接对象
流对象彼此互相连接或者连接到其他信息的方法主要有三种。顺序流:用一个带实心箭头的实心线表示,用于指定活动执行的顺序。缺省流:默认流,即所有条件都不满足时,流程从此线出流过,进入下一阶段。条件流:依据线的条件,来判断业务流程是否能由此线流过。
图2-8 连接对象全览图
2.4 泳道
泳池和泳道,泳池和泳道都表示活动的参与者,即表示过程中活动的执行者,它可以是一个组织、角色或系统。泳池可以划分成多个泳道,泳道具有分层结构。
图2-9 泳道全览图
3 BPMN画图工具简介
Camunda是一个工作流引擎,执行Bpmn2.0标准,因此依赖于基于bpmn的流程图(本质上是一个xml文件),下载地址为Download The Camunda BPMN / DMN Process Modeler | Camunda,基于 bpmn.io的面向 BPMN DMN和CMMN的集成建模解决方案,camunda-modeler是一款外部流程设计器,同普通安装软件一样安装完后双击.exe程序即可使用,也可以通过IDEA安装外部Tool使用。具体操作可参考这篇博文。这里给一个截图,以及生成的xml文档。
图3-1 Camunda工作台
对应的xml文档文章来源:https://www.toymoban.com/news/detail-511806.html
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://bpmn.io/schema/bpmn" id="Definitions_0001">
<process id="zgr-test1" name="测试条件走向" isExecutable="true">
<startEvent id="Event_0a6bsya"></startEvent>
<userTask id="Activity_0pfz1cb" name="第一"></userTask>
<sequenceFlow id="Flow_0454chc" sourceRef="Event_0a6bsya" targetRef="Activity_0pfz1cb"></sequenceFlow>
<exclusiveGateway id="Gateway_1q7504o" default="Flow_1wu0khg"></exclusiveGateway>
<sequenceFlow id="Flow_02g6tt4" sourceRef="Activity_0pfz1cb" targetRef="Gateway_1q7504o"></sequenceFlow>
<userTask id="Activity_19w1ng8" name="第二"></userTask>
<sequenceFlow id="Flow_1wu0khg" sourceRef="Gateway_1q7504o" targetRef="Activity_19w1ng8"></sequenceFlow>
<endEvent id="Event_14e42yk"></endEvent>
<sequenceFlow id="Flow_1d0b1lk" sourceRef="Activity_19w1ng8" targetRef="Event_14e42yk"></sequenceFlow>
<sequenceFlow id="Flow_0rdv9v5" sourceRef="Gateway_1q7504o" targetRef="Event_14e42yk">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[=${day>3}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_zgr-test1">
<bpmndi:BPMNPlane bpmnElement="zgr-test1" id="BPMNPlane_zgr-test1">
<bpmndi:BPMNShape bpmnElement="Event_0a6bsya" id="BPMNShape_Event_0a6bsya">
<omgdc:Bounds height="36.0" width="36.0" x="222.0" y="202.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Activity_0pfz1cb" id="BPMNShape_Activity_0pfz1cb">
<omgdc:Bounds height="100.0" width="100.0" x="358.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Gateway_1q7504o" id="BPMNShape_Gateway_1q7504o" isMarkerVisible="true">
<omgdc:Bounds height="50.0" width="50.0" x="558.0" y="195.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Activity_19w1ng8" id="BPMNShape_Activity_19w1ng8">
<omgdc:Bounds height="100.0" width="100.0" x="708.0" y="170.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Event_14e42yk" id="BPMNShape_Event_14e42yk">
<omgdc:Bounds height="36.0" width="36.0" x="908.0" y="202.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="Flow_0454chc" id="BPMNEdge_Flow_0454chc">
<omgdi:waypoint x="258.0" y="220.0"></omgdi:waypoint>
<omgdi:waypoint x="358.0" y="220.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Flow_02g6tt4" id="BPMNEdge_Flow_02g6tt4">
<omgdi:waypoint x="458.0" y="220.0"></omgdi:waypoint>
<omgdi:waypoint x="558.0" y="220.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Flow_1wu0khg" id="BPMNEdge_Flow_1wu0khg">
<omgdi:waypoint x="608.0" y="220.0"></omgdi:waypoint>
<omgdi:waypoint x="708.0" y="220.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Flow_1d0b1lk" id="BPMNEdge_Flow_1d0b1lk">
<omgdi:waypoint x="808.0" y="220.0"></omgdi:waypoint>
<omgdi:waypoint x="908.0" y="220.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="Flow_0rdv9v5" id="BPMNEdge_Flow_0rdv9v5">
<omgdi:waypoint x="583.0" y="245.0"></omgdi:waypoint>
<omgdi:waypoint x="583.0" y="420.0"></omgdi:waypoint>
<omgdi:waypoint x="926.0" y="420.0"></omgdi:waypoint>
<omgdi:waypoint x="926.0" y="238.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
4 写在最后
本篇博客简单的介绍了一些BPMN2.0的基本概念,只是一个入门级别,BPMN 2.0 -业务过程模型和符号这张图详细介绍了这些基本信息,第二节的图都来自这张图,有兴趣的可以下载后好好研究。文章来源地址https://www.toymoban.com/news/detail-511806.html
到了这里,关于BPMN2.0规范简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!