`
ronghao
  • 浏览: 457324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8809
社区版块
存档分类
最新评论

BPMN这点事-三种流程模型

阅读更多

BPMN的流程模型

我们使用业务流程建模来交流信息,正如在上一节里所述,根据不同模型的用户(客户、业务人员、分析人员、开发人员),建模有着不同的风格。BPMN被设计用来涵盖各种风格的流程模型(以满足不同角色人员交流的需要)和创建端到端的业务流程,它支持三种基本类型的流程模型:

Ø 流程编制(Process Orchestration),包含:

 

  • 私有的不可执行的(内部的)业务流程;
  • 私有的可执行(内部的)业务流程;
  • 公开流程。

 

Ø 编排(Choreography)
Ø 协作(Collaborations),包含流程与/或编排。

 

  • 具有会话视图(Conversation)。

 

私有的(内部的)业务流程

私有的业务流程是指某一组织的内部工作流程,我们通常称之为称为工作流,在WEB服务领域,我们也称之为服务的编制(Orchestration)。存在两种类型的私有业务流程:可执行的和不可执行的。可执行的私有业务流程以被计算机执行为建模目的,由相应的BPMS系统来自动化流程的执行,它包含了足够的执行细节,这些细节包括执行规则、条件表达式等计算机解释执行所需要的技术信息,该模型最直接的用户是开发人员。不可执行的私有业务流程则以文档化为建模的目的,它缺少执行细节,但是包括足够的交流信息,该模型的用户包括了业务人员与分析人员。

作为一个例子,我们一起来看看我在公安局户籍科为儿子办理户口的流程,如下图所示:

 

图1公安局户籍科上户口的流程

当我来到户籍科,递上足够的资料,然后就开始等待。我能看到共有四个工作人员,第一个工作人员负责接收资料,查看资料是否完备,接下来,她将所有的资料传递到下一个工作人员,第二个工作人员对资料进行审核,在计算机上查看我们的户口信息是否正确,接下来,如果资料无误,他将资料传递到第三个工作人员,第三个工作人员负责在计算机上为我的儿子录入新的户口,最后打印出一张户口页,第四个工作人员是职位最大的警员,她负责盖章,然后将儿子的户口页传递给在窗口外等待的我。

根据上面对私有业务流程的定义,我们很容易的判断出这个流程是个不可执行的私有业务流程,因为该流程是户籍科的内部工作流程,作为该流程服务对象的我,我根本不用关心户籍科内部是如何对我的申请进行处理的,所以它是私有业务流程。该流程是由规章或制度所规定的,由工作人员来驱动,并非通过计算机协调,所以这是个不可执行的私有业务流程。

因为私有业务流程是内部流程,所以它只能存在于一个池(pool,池代表一个参与者)里,如下图所示,我们可以将私有业务流程建模在一个池里,但通常这样做没有太大的意义,更经常的情况是,我们选择将池忽略。

图2公安局户籍科私有业务流程的另一种建模形式

公开流程

公开流程表现一个私有业务流程与其他流程或参与者之间的交互。

还是以户口办理作为例子,作为户口申请人,我来到公安局户籍科,我心揣揣,我不知道我该做些什么,于是我看到大厅里如下图所示的流程,于是我立刻就明白了,我只需要将资料交给办事人员,然后等待取新的户口页即可。

注意下图所示的公开流程与图1所示的私有流程有哪些不同。第一是图中出现了多个参与者,参与者间通过消息流连接(图中虚线箭头连线);第二是户籍科的办理流程被缩减到只剩两个与外部参与者交互的活动,两个原有的内部活动被忽略了。这两点不同即是公开流程的特点:表现与外部参与者、流程间的交互,忽略内部活动。联想到我们实际的编程,总结成一句话,就是隐藏内部实现细节,仅仅展现对外接口,表现流程的外部行为。


图3公安局户籍科办理户口的公开流程

协作

协作描绘两个或多个业务实体间的交互。一个协作通常包含两个或多个池,每个池代表一个参与者(业务实体)。参与者之间的消息交换通过连接两个池(或池中的对象)的消息流表现。协作可以表现为两个或多个公开流程之间的交互,在上一节里,我们提到,与对应的私有流程相比,公开流程隐藏了内部细节活动。池也可以是黑盒,即里面什么对象都没有。

那么,这里有一个问题,公开流程与协作有什么区别?区别在于表现的范围,公开流程只是表现一个私有流程与外部的交互,而协作则能表现多个流程/参与者之间的交互。

还是看户口办理的例子,在前面的例子中,我们看到了公安局户籍科办理户口的私有流程和公开流程,似乎办理户口是一件很简单的事情,但这仅仅只是办理户口中的一步而已。在此之前,我先要去医院办理小孩出生证明,接下来,我要去居委会登记小孩信息,再接下来,我要去计生办办理符合计划生育政策的证明,最后,我才来到户籍科。下图是整个户口办理的协作图,作为简化,这里将除申请人和户籍科之外的池都黑盒了:


图4户口办理协作图

编排

同样是表现多个参与者之间的交互,编排做的更为纯粹,它取消掉了池的概念,改由编排活动直接表现多个参与者之间的消息交互,为协作模型提供了一种基于流程图的视图。户口办理的编排图如下图所示,其中每个活动都能看到上下的方形区域有参与者信息,这表明这个活动的参与者,浅色部分为活动的发起者,深色部分为活动的响应者,我们会在接下来的BPMN元素小节里详细描述这一活动类型:


图5户口办理编排图

与协作图相比,编排图省略掉了更多的细节,例如与各个参与者具体的交互过程,它关心谁和谁产生了交互,至于如何交互,分几步交互,它并不关心。例如办理户口这个活动,实际上我是分别和两个警官进行了交互,一个是负责接受资料的年轻女警官,一个是负责盖章复核的领导警官,在协作图中,我可以通过公开流程展现出这一点,但是在编排图中,这并不是要表现的重点。

协作图表现出参与者之间的交互,并包含交互的细节信息(交互的接口、如何交互);编排图则以流程图的形式表现出参与者之间的交互,它关心的是某个任务需要哪些参与者发生交互,交互的细节不是其表现的重点。

         编制与编排的区别

在上文中,我们提到了服务的编制(Orchestration),这里,我们又提到了编排(Choreography),这两者是有很大区别的。

WS-BPEL将SOA中的服务按照一定的顺序灵活组装在一起的流程就是编制(Orchestration)。编制后的WS-BPEL流,通常代表了某个特定的业务中的服务的执行流。而编排(Choreography)则是描述参与者之间交互关系的流程。与编制不同的是,编排并不需要一个执行引擎,它只是描述关系。编制代表的是一个可执行流程,它必须通过执行引擎来执行。而编排实质上是代表一种描述,即参与者之间如何互相协调来完成一个目标。

John Reynolds在其博客中是这样描述编制和编排的区别[1]

编制 == 可执行过程

Web服务编制与执行特定的业务流程相关。WS-BPEL是一种用来定义可以在一个编制引擎中执行的流程语言。

编排 == 多方合作

因此编制必须对应一个执行引擎,而编排由于涉及到多方合作,所以它是不能被直接部署的。


 

协作的会话视图

会话视图为协作图提供了另外一种非正式的表现形式,与编排图一样,它的目标同样在于表现参与者之间的关系,它将一系列相关的信息交互定义为一次会话。户口办理的会话图如下图所示,图中只存在池与会话(Communication)元素,会话元素由图中的六边形代表,它代表两个或多个参与者之间一系列相关的信息交互,我们可以看到,办理户口需要申请人与四个组织发生四次会话:


图6户口办理会话图

会话视图的作用之一是能够有效减少模型中消息流的数量,便于我们理解。


图7会话视图简化交互模型



[1] http://weblogs.java.net/blog/johnreynolds/archive/2006/01/service_orchest.html

 

  • 大小: 13.5 KB
  • 大小: 17.4 KB
  • 大小: 21.1 KB
  • 大小: 42.5 KB
  • 大小: 40.7 KB
  • 大小: 16.3 KB
  • 大小: 8.7 KB
0
3
分享到:
评论
2 楼 Herist 2011-09-22  
1 楼 ixu 2011-08-16  
很好的示例!

相关推荐

    bpmn-js-examples, 关于如何使用bpmn的示例.zip

    bpmn-js是一个JavaScript库,用于在Web应用中展示和操作BPMN流程图。这个库允许开发者在浏览器中直接编辑和交互BPMN模型,为业务流程的可视化管理和设计提供了便利。 标题中的"bpmn-js-examples"是指一系列的示例...

    flowable-bpmn---idea的插件--超级好用

    对于开发人员来说,能够在一个高效、直观的环境中设计和管理流程模型是至关重要的,而IntelliJ IDEA作为Java开发的主流IDE,其丰富的插件生态则满足了这一需求。"flowable-bpmn---idea的插件"正是这样一个工具,旨在...

    bpmn-js-seed-master

    BPMN(Business Process Model and Notation)是一种国际标准,用于绘制业务流程模型,它提供了统一的语言和符号,使得业务人员和技术人员能够有效地沟通和协作。JS指的是JavaScript,一种广泛应用于Web开发的脚本...

    前端利用bpmn-js实现工作流

    BPMN-js是一个基于JavaScript的开源库,它允许开发者在Web应用中可视化和交互处理Business Process Model and Notation(业务流程模型与符号)图表。前端开发语言HTML、CSS和JavaScript是实现这一目标的基础,而HTML...

    BPMN2.0标准规范-机器翻译中文版

    BPMN(Business Process Model and Notation,业务流程模型和符号)是一种标准化的符号语言,用于描述业务流程模型。BPMN2.0是OMG(Object Management Group,对象管理集团)发布的最新版本的BPMN标准规范。 BPMN...

    workflow-bpmn-modeler-jeecgboot V0.1.0

    workflow-bpmn-modeler-jeecgboot V0.1.0 是一款针对Jeecg-Boot框架优化的BPMN流程建模工具,旨在提供更加高效和定制化的流程设计体验。 首先,让我们深入理解Jeecg-Boot。Jeecg-Boot 是一个基于代码生成器的快速...

    BabelLanguagePack-soa.bpmn2-modeler-zh_.zip

    "soa.bpmn2-modeler"部分则表明此汉化包特别关注了服务导向架构(SOA)和业务流程模型与notation(BPMN)2.0模型编辑器的界面翻译。BPMN是一种标准化的图形表示法,用于描述和设计业务流程,因此这个汉化包对于涉及...

    BPMN2.0规范2011-01-03

    《BPMN2.0规范2011-01-03》是企业业务流程建模与表示的权威指南,它为全球范围内的企业和组织提供了一种标准化的方式来描述、交流和执行业务流程。BPMN2.0(Business Process Model and Notation 2.0)自2011年1月3...

    本项目基于vue、antdesignvue和bpmn.io@7.0,实现flowable的modeler流程设计器.zip

    在这个项目中,开发者通过集成bpmn.io库,实现了Flowable Modeler的功能,允许用户在线绘制、保存和导出BPMN流程图。 5. **项目结构**: 压缩包中的`flowable-bpmn-modeler-master`文件夹很可能是项目的源代码仓库...

    vue-bpmn-demo2.zip

    - `bpmn-js`:这是一个基于SVG的BPMN模型器,用于渲染和编辑BPMN流程图。 - `bpmn-modeler`:提供了一套API,用于在前端创建和操作BPMN模型。 4. **组件开发**: 在`src/components`中,可能会有一个名为`...

    BPMN 2.0 规范 PDF

    XML Schema 包括对BPMN元模型中每个元素的详细定义,以及如何组合这些元素形成完整的流程模型。 #### 七、BPMN 2.0 的扩展机制 BPMN 2.0 支持扩展机制,允许用户根据自己的需求添加自定义元素和属性。这对于满足...

    BPMN 2.0 - 业务过程模型和符号(中文版).pdf

    BPMN 2.0 业务过程模型和符号 BPMN 2.0 是业务过程模型和符号的国际标准,用于描述和分析业务过程。它提供了一种通用的符号和规则来描述业务过程,从而帮助业务分析师、开发人员和业务用户之间的沟通和协作。 业务...

    vue使用 bpmn.js

    这个库提供了丰富的API和工具,使得开发者能够方便地将BPMN流程图集成到自己的应用中,无论是简单的显示还是复杂的交互编辑功能都能轻松实现。 在"vue使用bpmn.js"的项目中,首先需要安装bpmn.io相关的依赖库。这...

    Python库 | BPMN_RPA-4.3.0-py3-none-any.whl

    BPMN包括事件、活动、网关、数据对象等元素,通过这些元素可以构建出完整的业务流程模型。 **2. RPA(Robotic Process Automation)** RPA是一种技术,通过模拟人类在应用软件中的交互,实现对重复性、规则明确的...

    基于bpmn.js的流程图

    这个库为开发人员提供了一种强大的工具,使得非技术人员也能理解复杂的业务流程模型。 **一、BPMN.js基础知识** 1. **BPMN元素**:BPMN.js支持各种BPMN元素,如事件(Event)、任务(Task)、网关(Gateway)、...

    bpmn-js汉化文件.zip

    BPMN-JS 是一款强大的JavaScript库,用于在Web浏览器中渲染和交互Business Process Model and Notation(业务流程模型与符号)图表。它提供了丰富的API和可扩展性,使得开发人员能够轻松地创建、编辑和展示BPMN流程...

    VUE + bpmn 流程设计器 demo

    在这个项目中,可能使用了`npm`或`yarn`来安装`bpmn-js`库,这是一个官方支持的BPMN 2.0模型器,提供了一套API和组件,用于在浏览器中展示和编辑BPMN流程图。Vue.js通过`import`语句将这个库引入到项目中,并在组件...

    BPMN 2.0.gstencil-v05.zip

    **BPMN** 是业务流程管理的重要工具,它的目标是让业务流程模型对业务分析师、项目经理、开发人员以及业务用户都易于理解。BPMN 2.0是该标准的最新版本,增加了许多新功能和改进,以提高灵活性和可扩展性。 **...

    BPMN模型和理论介绍

    业务流程模型与符号(BPMN)是一种流程建模标准,它提供了一套业务用户易于理解的符号,旨在支持从创建业务流程轮廓到流程的最终实现,以及最终用户的管理监控。BPMN的版本2.0是由OMG(对象管理组织)制定和维护的...

Global site tag (gtag.js) - Google Analytics