BPMN2.0规范简介

news/2025/2/11 6:22:51/

1 概述

BPMN(Business Process Model & Notation),中文名为业务流程模型与符号。BPMN2.0是OMG(Object Management Group,对象管理组织)制定的,其主要目的是既给用户提供一套简单的、容易理解的机制,以便用户创建流程模型;又能使用户能很好的处理不同流程模型内在的复杂性。

BPMN2.0提供了五种不同的元素,分别是Flow Objects 流对象、Data 数据、Connecting Objects 连接对象、Artifacts 描述对象。

image-20210207094448922.png

图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文档

<?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 -业务过程模型和符号这张图详细介绍了这些基本信息,第二节的图都来自这张图,有兴趣的可以下载后好好研究。


http://www.ppmy.cn/news/667263.html

相关文章

The Shebeen——爱尔兰酒吧 NFT 来袭!

从爱尔兰神像到标志性的爱尔兰帽子&#xff0c;The Shebeen——爱尔兰酒吧 NFT 系列是一系列非常吸引的独特数字资产&#xff0c;体现了爱尔兰的精神和风俗。 The Shebeen NFT 系列均来自 The Shebeen——爱尔兰酒吧游戏体验&#xff0c;3 月 17 日至 3 月 29 日可在 The Sandb…

如何开发出成功的iPhone游戏?

如何开发出成功的iPhone游戏&#xff1f; 本文由一位游戏开发者所撰&#xff1a;   iPhone游戏如此之多&#xff0c;设计iPhone游戏都该注意什么&#xff1f;又如何让让自己的游戏脱颖而出&#xff0c;吸引玩家并留住玩家&#xff0c;开发商如何从游戏中获得收入&#xff1…

如何开发出成功的iPhone游戏

Phone游戏如此之多&#xff0c;设计iPhone游戏都该注意什么&#xff1f;又如何让让自己的游戏脱颖而出&#xff0c;吸引玩家并留住玩家&#xff0c;开发商如何从游戏中获得收入&#xff1f; 不要让玩家花太多时间通关 通常我会在短途旅行或做饭时候&#xff0c;忙里偷闲&…

分享:如何开发出成功的iOS小游戏?

本文由一位游戏开发者所撰。iPhone游戏如此之多&#xff0c;设计iPhone游戏都该注意什么&#xff1f;又如何让让自己的游戏脱颖而出&#xff0c;吸引玩家并留住玩家&#xff0c;开发商如何从游戏中获得收入&#xff1f; 不要让玩家花太多时间通关 通常我会在短途旅行或做饭时…

如何开发出成功的iOS小游戏?

http://mobile.51cto.com/iphone-313105.htm 本文由一位游戏开发者所撰。iPhone游戏如此之多&#xff0c;设计iPhone游戏都该注意什么&#xff1f;又如何让让自己的游戏脱颖而出&#xff0c;吸引玩家并留住玩家&#xff0c;开发商如何从游戏中获得收入&#xff1f; 不要让玩家花…

PPT素材 + 手机怎么玩洛克王国(flash游戏)

阿~最近腰不舒服&#xff0c;起床跟针扎似的&#xff0c;有没有推荐的?&#xff0c;不然起不来床就不能码字推文了~ ( &#xff61;ớ ₃ờ)ھ 话不多说&#xff0c; 问题答疑。 1 PPT素材问题 昨天有小伙纸要下载千库的ppt&#xff0c;ppt我的网站是最多的&#xff0c;所以这…

浏览器工作原理(超级详解!!!!)

浏览器工作原理 浏览器的结构 用户界面 —> 浏览器引擎—>渲染引擎 渲染引擎上有: 网络 js解析器 -------->也称浏览器内核 浏览器引擎上有&#xff1a;数据持久层&#xff08;帮助浏览器存储数据 如cookie等&#xff09; 各个浏览器的内核 IE —> Trident …

HOT16-除自身以外数组的乘积

leetcode原题链接&#xff1a; 出自身以外数组的乘积 题目描述 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 …