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

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 2.0 - 业务过程模型和符号(中文版).pdf

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

    BPMN-2.0-Handbook-Camunda

    BPMN:业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram)...讨论BPMN的各种的用途,包括以何种精度来影响一个流程图中的模型;BPMN作为一个标准的价值,以及BPMN未来发展的远景。

    workflow-bpmn-modeler:项目本项目基于vue和bpmn.io@7.0,实现flowable的modeler模型设计器

    工作流程bpmn-modeler :fire:本项目基于vue和bpmn.io@7.0 ,实现bpmn.io@7.0的建模器流程设计器预览在线演示 :backhand_index_pointing_right:安装# 安装yarn add workflow-bpmn-modeler使用说明(最简demo) ...

    基于bpmn的模型开发方法

    对象管理组织(OMG)开发了标准业务流程模型和表示法(BPMN)。BPMN的主要目标是提供一种易于被所有业务用户理解的符号,从创建流程初稿的业务分析师到负责实现执行这些流程的技术开发人员,最后,对管理和监控这些...

    BPMN2.0标准规范(英文版和中文版).zip

    对象管理组(OMG)已开发了标准的业务流程模型和表示法(BPMN)。 BPMN的主要目标是提供一种易于理解的符 号,从创建流程初始草稿的业务分析人员到负责实施将执行那些流程的技术的技术开发人员,最后是所有业务用 户...

    python-bpmn-engine:在Python流程中解析和执行Camunda BPMN模型

    一个用于在单个流程中解析和执行BPMN模型的python模块到目前为止支持的元素: 开始/结束事件任务(手动,用户,服务)-暂时执行虚拟网关(专有,并行) 有条件的顺序流BPMN模型示例: 用法示例: import asynciofrom...

    论文研究-一种BPMN到JPDL的模型转换方法 .pdf

    一种BPMN到JPDL的模型转换方法,张元青,聂兰顺,模型转换是模型驱动体系结构和模型驱动软件开发的核心技术。以流程模型为研究对象,研究了BPMN模型与JBPM模型之间的转换方法。首先�

    论文研究-基于同步核的BPMN模型融合.pdf

    为解决上述问题, 本文提出了一种基于同步核的任务依赖关系建模机制, 给出了流程的BPMN 模型与同步核模型之间的相互转换方法, 实现了相应的原型系统, 最终基于同步核的融合实现了BPMN模型的融合.

    BPMN模型和理论介绍

    是本人学习总结的一个BPMN工作流业务流程的介绍,和大家分享

    bpmn-server:用于Node.js的BPMN 2.0服务器,为工作流提供建模,执行,持久性和监视。 以及示例用户界面。 旨在成为BPMN 2.0的开发人员工作台

    bpmn服务器 介绍 bpmn-server提供BPMN 2.0建模,执行和持久性,作为Node.js的开源工作流服务器 该软件包是专门为Node.js设计的,并且完全使用TypeScript开发 WebApp通过建模和开发工作流提供UI 目录 文献资料 流程...

    BPMN2.0标准模型符号.zip

    OMG于2011年推出BPMN2.0标准,对BPMN进行了重新定义。BPMN的主要目标是提供一些被所有业务用户容易...BPMN也支持提供一个内部的模型可以生成可执行的BPEL4WS。因此BPMN的出现,弥补了从业务流程设计到流程开发的间隙。

    BPMN设计指南.pdf

    首先BPMN规范是由标准组织BPMI...BPMN定义了业务流程图,其基于流程图技术,同时为创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。

    zb-bpmn-model:Zeebe的BPMN模型API

    Zeebe BPMN模型API BPMN模型API,用于解析和创建Zeebe工作流。 免责声明 该项目正在进行中,目前不用于生产! 特征 解析BPMN XML 解析简单的工作流程YAML 验证工作流程 使用生成器创建工作流程 生成工作流程的...

    BPMN2.0-概要

    BPMN(BusinessProcessModelAndNotation)-业务流程模型和符号是有BPMI(BusinessProcessManagementInitiative)开发的一套变准的业务流程建模符号。2004年5月发布了BPMN1.0规范.BPMI于2005年9月并入OMG...

    论文研究-基于BPMN的服务组合执行引擎的研究与实现.pdf

    业务模型和执行模型的一致性是当前服务组合研究...针对该问题,提出了一种基于业务流程建模标注的Web服务组合执行方案,设计了BPMN模型的解释执行算法,给出了执行引擎的原型系统,并通过具体案例验证了方案的有效性。

    论文研究-BPMN到BPEL2.0的模型转换方法.pdf

    随着WSBPEL2.0规范标准的提出,现有的BPMN到BPEL的组件转换方法已不再适用。为了适应BPEL的变化,对组件的转换进行改动和扩展,对错误处理活动在语义上提供支持,并且提供了显式的事务特性支持。这种设计已经在...

    使用子流程和多实例标记发现BPMN模型

    使用子流程和多实例标记发现BPMN模型

    new-fbpmnq:BPMN图验证器根据验证规则提供BPMN 2.0业务流程模型的在线一致性检查

    免费的在线BPMN验证工具 BPMN图验证器根据验证规则提供BPMN 2.0业务流程模型的在线一致性检查 我们使用第三方bpmn.io服务可视化BPMN模型

    bpmn.ai:围绕业务流程的机器学习

    :流程模型模式的集合,用于协调在业务流程中(对于主管和IT架构师)使用AI。 bpmn.ai-core:在此存储库中,您可以找到可重用,可伸缩的数据提取管道(基于Apache Spark),该管道将流行的BPMN引擎(例如Camunda)...

Global site tag (gtag.js) - Google Analytics