业务流程模型和标记法
业务过程建模标记法(Business Process Modeling Notation, BPMN[译注 1])是对工作流中的特定业务过程[译注 2]的图形化表示法。它由业务过程管理倡议组织(Business Process Management Initiative, BPMI)开发,该组织已于2005年与对象管理组织(Object Management Group, OMG)合并,从那时起,BPMN由OMG维护。BPMN当前版本为1.2,2009年1月发布,有重要修改的2.0版本正在进行中。
概述
业务过程建模标记法(Business Process Modeling Notation, BPMN)是关于业务过程建模的标准。它建立在与UML的活动图非常相似的流程图法(flowcharting)基础上,为“业务过程图”(Business Process Diagram, BPD)中的特定业务过程提供一套图形化标记法。BPMN的目标是,通过提供一套既符合业务人员直观又能表现复杂过程语义的标记法,同时为技术人员和业务人员从事业务过程管理提供支持。BPMN规范还提供从标记法的图到执行语言基础构造的映射,尤其是业务过程执行语言(Business Process Execution Language, BPEL)。
BPMN的首要目的是提供全体业务相关者易于理解的标准标记法。业务相关者包括创造与梳理流程的业务分析师、负责实施过程的技术开发者、以及管理和监督过程的经理人。BPMN旨在充当公共语言,跨越业务过程设计和实施之间常见的鸿沟。
当前有多种竞争的业务过程建模语言标准供建模过程和工具选用。广泛采用BPMN将有助于统一基本的业务过程概念的表达(例如:公共或私有的过程、编排),就像那些高级的业务概念一样(例如:例外处理、事务补偿)。
BPMN基本话题
范围
BPMN仅限于支持对业务过程有用的建模概念。这意味着组织所做的非业务目的其他类型建模将排除在BPMN之外。例如,以下方面的建模不属于BPMN的一部分:
- 组织结构
- 职能分解[译注 3]
- 数据模型
此外,虽然BPMN会显示数据的流(消息)以及活动与数据人工物的关联,但它并非数据流图(data flow diagram)。
要素
BPMN用很小一套图形要素做简单的图来建模,这将令业务用户与开发者一样容易理解其中的过程和流。它的四种基本要素如下:
- 流对象(Flow Object)
- 事件(Events),活动(Activities),关口(Getways)
- 连接对象(Connecting Objects)
- 顺序流(Sequence Flow),消息流(Message Flow),关联(Association)
- 泳道(Swimlanes)
- 池(Pool),道(Lane)
- 人工物(Artifacts/Artefacts)
- 数据对象(Data Object),组(Group),注释(Annotation)
这四大类对象令我们有机会做出简单的业务过程图(BPD, business process diagram)。同时,BPMN也允许在BPD中创建你自己的流对象、人工物类型,使图更好理解。
流对象与连接对象
流对象(Flow Objects)是BPMN的主要描述对象,由三种核心要素(事件、活动、关口)组成。
- 事件(Event)
- “事件”(Event)以圆环表示,指发生的事情(区分于“活动”代表所做的事情)。圆环中的图标代表事件的类型(例如:信封为消息,时钟为时间)。事件也被分为“捕获”(Catching, 例如捕获输入的消息而开始一个过程)或“抛出”(Throwing, 例如在过程结束抛出消息)。
- 开始事件(Start event)
- 作为过程的触发器;以细单线标明,并且只能“捕获”(Catch),所以它显示为空心(轮廓)的图标。
- 结束事件(End event)
- 表现过程的结果;以粗单线标明,且只能“抛出”(Throw),所以显示为实心图标。
- 中间事件(Intermediate event)
- 表现发生在开始和结束事件之间的事;以双线标明,可以是“抛出”或“捕获”(相应采用实心或空心图标)。例如,一任务流到一事件,抛出一个消息到另一个池,然后由下一个事件守候,捕获其回应。
- 活动(Activity)
- “活动”(Activity)用圆角矩形表示,并描述必需做的工作的种类。
- 任务(Task)
- 任务代表单一工作单元,它不会或不能被分解为更深层次上的业务过程细节,而不包含操作程序步骤的图示(此非BPMN的目的)。
- 子过程(Sub-process)
- 用于隐藏或显露深层业务过程细节——收起时,在矩形底部用加号标明子过程;展开时,在矩形内显示全部的流对象、连接对象及人工物。
- 子过程自含开始及结束事件,来自“父”过程的顺序流不可跨过其边框。
- 事务(Transaction)
- 子过程的一种形式,其所包含的全部活动必须作为一个整体对待,即它们必须完全结束以满足目标,其中任何一个失败就必须全部偿还(撤回)。事务作为扩展的子过程,用双线环绕。
- 关口(Gateway)
- “关口”(Gateway)用菱形表示,基于所示条件决定路径的分流与合并。
“流对象”通过“连接对象”(Connecting objects)互相连接。连接对象包括三个类型(顺序、消息、关联):
- 顺序流(Sequence Flow)
- “顺序流”用实心线和箭头表示,显示活动进行的顺序。“顺序流”还可以在开始端带有符号,以小菱形标明其中一些发自活动的“条件流”(conditional flow),同时以对角斜线标明发自活动或决定,带条件流的“默认流”(default flow)。
- 消息流(Message Flow)
- “消息流”用虚线表示,起始端有一个空心圆圈,终端是一个空心箭头。它告诉我们哪些消息流跨过组织的边界(即介于池之间)。消息流不可用于在同一个池中连接活动或事件。
- 关联(Association)
- “关联”(Association)用点线表示。它用于建立人工物或文本到流对象的联系,并且可以用空心箭头标明某种方向性(指向人工物表示结果,源自人工物表示输入,同时出现则表示读和更新)。当人工物或文本联系到顺序或消息流时,关联无需标明方向(那些流已经显示了方向)。
泳道与人工物
泳道(Swimlanes)是从视觉上对活动加以组织或分类的机制。它基于交叉功能流程图基础,在BPMN中有两种类型:
- 池(Pool)
- 表示过程中的主要参与者,典型地,用来分开不同的组织。一个池可容纳一个或多个道(像真实的泳池一样)。当池为展开的(显示出内部细节),绘做大的矩形;若为收起的(隐藏起内部细节),绘做沿着图的长或宽伸展的空的矩形。
- 道(Lane)
- 在池中,用于活动按职能[译注 4]或角色归类。绘做按池的长或宽展开的矩形。道包含流对象、连接对象和人造物。
人工物(Artifacts)使开发者可以带给模型/图更多的信息,通过这一方式,使模型/图更可读。预定的三种人工物如下:
- 数据对象(Data Objects)
- “数据对象”向读者显示在活动中需要或产生哪些数据。
- 组(Group)
- 组表现为虚线的圆角矩形。组用来将不同的活动分组,但不影响图中的流。
- 注释(Annotation)
- 注释为模型/图的读者增加可理解性。
(未完待续)
- ^ 目前没有发现BPMN的正式翻译。中文(简体)网络上流行的文章中,将BPMN译作“业务流程建模标注”。《UML参考手册》(姚淑珍、唐发根等译,机械工业出版社,2001)中,notation译作“表示法”。根据这份规范的内容,和在建模领域背景上的考量,notation译作“标记法”应当是恰如其分。
- ^ Business Process,当前流行说法是“业务流程”。译者认为,这是一个容易引起概念混淆、不严格的说法法。在比较严谨的论述,例如许多学术论文中,仍然多用“业务过程”。结合管理领域的用语沿革,以例如BPMN内容本身分析,多数情况下,还是应该还其本意——业务过程。
- ^ Organization是拥有业务的实体,可包括任何类型——非商业的、政府的、民间的,对于组织,Function在汉语中应该是“职能”而非“功能”。
- ^ 按照BPMN的基本理解,这里的participant(参与者), function(职能,功能), role(角色),都不一定是“人的”(组织、职能与业务人员),也可以是计算机的(应用系统,功能,代理程序),这在中文更精确的表达中,造成一定的困惑。