业务流程建模标注(Business Process Modeling Notation,BPMN)详细介绍

本文主要是介绍业务流程建模标注(Business Process Modeling Notation,BPMN)详细介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、基本信息

摘要:该文章的目的是对BPMN(Business Process Modeling Notation)的概要描述和介绍。描述基本的BPMN符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)

作者:张玥

2、BPMN简介

2.1概述

  该文章的目的是对BPMN(Business Process Modeling Notation)的概要描述和介绍。

  描述基本的BPMN符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram);讨论BPMN的各种的用途,包括以何种精度来影响一个流程图中的模型;(Also discussed will be the different uses of BPMN, including how levels of precision affect what a modeler will include in a diagram.);BPMN作为一个标准的价值,以及BPMN未来发展的远景

2.2BPMN是什么

  由BPMI(The Business Process Management Initiative)开发了一套标准叫业务流程建模符号(BPMN)。在 BPMI Notation Working Group超过2年的努力,于2004年5月对外发布了BPMN 1.0 规范。BPMN的主要目标是提供一些被所有业务用户容易理解的符号,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控。BPMN也支持提供一个内部的模型可以生成可执行的BPEL4WS。因此BPMN的出现,弥补了从业务流程设计到流程开发的间隙。

  BPMN定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。而一个业务流程模型(Business Process Model),指一个由的图形对象(graphical objects)组成的网状图,图形对象包括活动(acticities)和用于定义这些活动执行顺序的流程控制器(flow controls)

2.3BPMN基础

  业务流程图由一组图形元素构成。这些元素让我们很容易开发一个简单的,为大多数业务分析人员更熟悉的流程图。

  对于建模者来说,这些图形都是易于区分和识别的。比如活动是长方形,路由是菱形。

  需要强调的是,开发BPMN的一个动机就是创建一套简单的机制来创建业务流程模式,与此同时,还要能够应付业务流程内在的复杂性。

  寻找一个可以处理这些相互冲突的需求的途径,是将这些图形符号组织并分类。

  BPMN四种基本元素是:

• Flow Objects
• Connecting Objects
• Swimlanes
• Artifacts(人造物品)

2.4流对象(Flow Objects)

  流对象是BPD的核心元素。

  有三个流对象 Event, Activity, Gateway

Event, 事件
用一个圆圈代表事件(Event),它指的是在业务流程的运行过程中发生的事情。这些事件影响流程的流转,事件通常有一个cause (trigger)或者impact (result)。
有三种类型的事件:Start, Intermediate, and End

Activity,活动
用圆角矩形表示一个活动, is a generic term for work that company performs.一个活动可以由多个活动组成,活动的类型包括:Task 和 Sub-Process

Gateway,网关
菱形代表网关,用来控制流程的分支和聚合。

2.5连接对象Connecting Objects

  在一个图中,连接对象将流程对象连接起来组成业务流程的结构。三种连接对象:

Sequence Flow 序列流
用实线实心箭头表示,代表流程中将被执行的活动的执行顺序。

Message Flow 消息流
用虚线空心箭头表示,用来表示2个分开的流程参与者(业务实体或业务角色)之间发送或者接收到的消息流。

Association 结合关系
点状虚线表示,用于显示活动的输入输出。

2.6甬道Swimlanes

  用以区分不同的功能和职责。

  BPMN有2中类型的甬道:

Pool
代表流程中的一个参与者。它也可以用作一个图形容器来与其他的pool相分隔。通常在交互流程中出现(B2B)。

  Pool主要用于2个独立的实体或者参与者之间的物理划分。

  各个pool中的活动通常是有自身的流程的。因此,顺序流(the Sequence Flow)通常不会越过多个pool的,而消息流是可以的,如下图就是一个带pool的业务流程图

Lane
Pool的子划分,可以垂直或者水平的,用来对活动的组织和分类。

  Lane更加接近我们传统的甬道的概念。

  Lane常用来将活动按照角色划分,流程可以在一个pool中跨Lane流转,但是在同一个pool中消息流通常不跨lane流转。

  一个简单业务流程的例子

 

详细的部分业务流程图

2.7描述对象Artifacts

  为了扩展基本符号,提供描述额外的上下文,BPMN使用了描述对象artifact

BPMN

Data Object
Data Objects are用于描述活动所需或者产生的数据。他们用连线与活动连接起来。
Group
用于描述和解释目的,不会影响流程的流转。
Annotation
提供一些附加性的文本信息给流程图的阅读者。

                            

一个使用artifacts的例子:
 

2.8BPMN分类

  业务流程模型(Business process modeling )提供不同的模型,以面向不同的读者,使用BPD可以有2个基本的模型

• Collaborative (Public) B2B Processes 协作流程模型
• Internal (Private) Business Processes 独立式流程模型

Collaborative B2B Processes 协作流程模型
  该模型描述了2个以上的业务实体之间的交互,不是从某一个特殊的参与者的角度,而是从一个全局的角度描述了这些流程的交互。描述的方式是使用活动的执行顺序和参与者之间的消息的流转。

2.9BPMN 的用途(通过 BPD 创建的业务流程种类)

<1>Collaborative(Public) B2B Processes
用 Pool 的方式描述两个或多个业务实体(流程)之间的互动(参与者之间的互动);主要描述业务实体之间可视(Public)的活动之间的互动
 
<2>Internal(Private) Business Processes
主要描述独立的业务实体(流程),也会描述出与外部参与者的互动关系,但主要描述业务实体之间不可见(Private,独立业务实体内部)的活动

(例子:泳道内的业务实体为 Internal,泳道之间的业务实体为 Collaborative)
 
 
2.10BPMN 与 BPEL4WS 的转换

(模型)
 
 
(例子)
 

使用BPMN建模的价值

  众多的成员保障了BPMN作为一个业务流程建模语言的标准。BPMN的发展也是减少现有过多的流程建模工具和语言的局面。同时,BPMI组织借鉴了很多已有建模语言的技术和经验,例如UML的活动图,UML EDOC的业务流程图,IDEF等等。推动BPMN发展的另一个因素是,以往的业务流程模型和系统设计开发从技术上被分开,这样就要手动的将业务流程模型转化为运行模型。这样会使流程所有者很容易出错,而且很难理解流程的升级和执行。

将一个BPMN图映射到BPEL4WF

  为了减少规范之间的不兼容性,BPMN的一个关键的目标就是在面向业务流程建模语言和实现该流程的编成语言之间建立一个桥梁。由于拥有丰富的对象属性,BPMN的图形化对象可以映射到BPEL4WS v1.1。

  下图标记了一个业务流程图的一部分是如何转化为BPEL4WS的。

 

BPMN的将来

  虽然BPMN规范当前版本是1.0,很多公司已经开始或即将开始支持该规范了。
大量应用经验的积累以及用户的反馈,提供了很多有价值的东西,尤其包括映射到BPEL4WS的部分。短期内不会有大版本发布,1.1版本将在1年之后发布。该版本会使BPMN更能满足有着更多上下文的高层业务模型,比如包括,业务规则业务策略的模型。BPMI是个非正式组织,它仍在不断发展,并且致力于开发BPM系统的核心规范。
BPMI和OMG组织正在讨论一些有意思的东西,如UML中的活动图(Activity Diagrams)可能会与BPMN的业务流程图合并。

补充概念

<1>Normal Flow/Normal Sequence Flow
开始于 Start Event,结束于 End Event,通过活动流转,不包括异常流程和回退补偿流程
 
<2>Link Event
可以用于 Off-Page Connectors(连接不同 BPMN 页面);作为 Go-To 对象
 
<3>Process Level
Sequence Flow 不能跨越子流程边界;Message Flow 和 Associations 可以跨越子流程边界
 
<4>Data Flow
Sequence Flow 和 Data Flow 可以合并,把 Data Flow 内的 Data Object 放置在 Sequence Flow 上即可
 
<5>Exception Handling
附属在活动上的 Intermediate Event 可以触发一个 Timer、Errors 或 Message作为一个异常 Trigger
 
<6>Compensation and Transactions
事务是有两个边界的活动,被事务协议所支持(如 WS-Transaction);异常处理不包括回退补偿
 
<7>Looping
   (1)活动:Do-While、While-Do 和 Multiple Instance
   (2)Sequence Flow:通过 Default Flow 循环执行
 
<8>Timer
   (1)延迟流程运行(活动之间用 Timer)
   (2)调用异常处理(活动边界用 Timer 作为条件触发其他流程)
 
<9>Ad-Hoc Process
流程内没有预先定义好的 Sequence Flow
 
Orchestration 和 Choreography
<1>Orchestration:Workflow、internal processes、private processes(定义流程并关联该流程到一个特定的机构,所以包含在一个 Pool 内)
<2>Choreography:Collaboration、global processes、B2B processes
   (1)描述两个或多个业务实体之间的互动,即定义不同 Pool 之间的互动
   (2)描述全局活动的互动序列
 
* BPMN v2 会更新如何对 Choreography 建模


 

这篇关于业务流程建模标注(Business Process Modeling Notation,BPMN)详细介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/480014

相关文章

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

java时区时间转为UTC的代码示例和详细解释

《java时区时间转为UTC的代码示例和详细解释》作为一名经验丰富的开发者,我经常被问到如何将Java中的时间转换为UTC时间,:本文主要介绍java时区时间转为UTC的代码示例和详细解释,文中通... 目录前言步骤一:导入必要的Java包步骤二:获取指定时区的时间步骤三:将指定时区的时间转换为UTC时间步

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具