`
grid.qian
  • 浏览: 57489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BPMN 简介

    博客分类:
  • bpmn
阅读更多

      

      隔了这么久,才又发了篇总结,真是不好意思啊。本来一直都想写有关BPMN,XPDL,BPEL方面的总结,也一直在准备。想先写XPDL,可总是没时间。没想到,因为要给同事做次讲座,逼的我先总结了BPMN。
      写在这里,主要是为了个人的一个总结。水平不高,参考了好多文献。希望对大家有帮助。     

      ^_^,还是先写参考文献吧:最重要当然还是BPMI的官方文档了,还有几篇以前学习的时候下的PDF,不知道来自那里了,这里就不标注了。
      http://se.csai.cn/ANALYZE/200712051042061988.htm
      http://www.javaresearch.org/article/39565.htm
      http://www.bpmn.org 


      概述


      BPMN,即Business Process Modeling Notation,业务流程建模符号。是用一种类似于流程图的图表形式来描述业务流程的一种方法。BPMN最初是由业务流程管理计划组织(Business Process Management Initiative BPMI)制定和发展起来的,目前由对象管理组织(Object Management Group OMG)来维护管理。BPMN从2002开始制定,到2004年5月发布了第一个版本。目前版本是1.1,好像2.0正在制定中。


      在BPMN出现之前,关于流程设计的符号并没有统一的标准,各个大的流程模型设计公司都有自己流程定义符号。这样在理解和沟通上就给大家造成了不便。所以BPMI组织就推出了BPMN这个标准,来统一业务流程描述符号。BPMN为大家提供了一种标准的、易读的定义和分析公开的和隐私的业务流程的方法。同时,BPMN也为管理人员、分析人员和程序开发人员提供了一种简单易懂的标注符号标准。从而消除公司或企业内部各个部门以及公司与公司之间的沟通障碍,为大家建立起一道沟通的桥梁。同时,业务流程建模符号还能够通过对各个业务流程的运行而设计的XML(扩展标记语言)文档加上了一种普通的符号使得该文档更加的直观易读。

      BPMN是一种图形化的建模工具,它的使用者主要是不懂IT技术的业务人员,有点像我们使用的UML。XPDL是一种基于XML的过程定义语言,主要是为了不同系统间有一个统一的流程定义语言,它像接口。而BPEL是业务流程执行语言,它是给流程引擎去直接执行的。它更像一种编程语言,让机器去运行。三者之间具体的区别,有时间我会另写一篇文章的。总的说来,BPMN是建模的,XPDL,BPEL是模型的实现。BPMN比后两者有更高的抽象。


      基本元素


      BPMN是以业务流程图(business process diagram BPD)为核心的。每个BPD根据提供的模型类型不同可以有三种基本的类型:Collaborative (Global) B2B Processes 协作图,Internal (Private) Business Processes 独立图,Public (Abstract) Process 抽象图。前者主要用来描述两个以上的业务实体或者说是参与者之间的交互,协作的情况。而后者主要关注的是某一个参与者内部业务流程的流转。而抽象图则是用来描述内部业务流程与外界的交互,关注点在交互,内部流程中不与外界交互的活动将被忽略。


      BPMN是以BPD为中心,规定了一些统一的图形元素。BPMN有四种基本元素。Flow Objects,Connecting Objects,Swimlanes,Artifacts.


      Flow Objects是BPMN的核心元素。它又包括:Event,Activity,Gateway。


      Event:Start Event,Intermediate Event,End Event三种。Event是指业务流程的运行过程中发生的事件。这些event会影响到流程的状态。一个event通常会有某种trigger或result。Trigger就是触发器,当有个消息到来,或者某个事情发生,比如说时间到了,都可以是一个Trigger,来触发该event。而Result就是该event发生后的一个结果,比如说发出一个消息等等。


      Activity,活动。就是业务流程中基本的业务单元。每一个activity代表一个特定的业务,比如说登陆,注销等等都可以是一个activity。Activity有两种类型:Task,Sub-process。Task很明显就是单一的业务活动。而sub-process是一个复合的业务活动,在该活动中存在一个子业务流程。相信学编程的人都可以理解这个概念。


      Gateway,网关。用来表示流程的分支和聚合。Gateway在BPMN是个很复杂的概念。它包括好几个种类:Data-based exclusive,Event-based exclusive,Inclusive,Complex,Parallel。不同的gateway的组合使用有时候可能会产生合法性问题。所以在使用的时候我们要格外小心。


      连接对象Connecting Objects。在一个业务流程图中,是使用连接对象把图中的各个独立的业务活动连接起来组成一个完成的含有语义的业务流程的。有三种连接对象:Sequence Flow,Message Flow,Association。
      Sequence Flow 序列流。用来表示业务流程中被执行的业务单元的执行顺序。
      Message Flow 消息流。用来表示不同业务流程参与者之间的消息交互的信息流。
      Association 关联。用来把对某个业务活动的输入输出的描述与这个业务活动联系起来。


      Swimlanes 甬道(泳道?)呵呵,也不知道用那个中文词比较合适。Swimlanes是用来区分不同部门或者不同参与者的功能和职责的。Swimlanes也包含两种类型:Pool,Lane。


      Pool代表流程中的一个参与者。它可以作为一个容器来包含其他图形元素,用以和其他参与者(其他Pool)来区分。在一个业务流程图中使用Pool主要是为了显示一个业务中不同的参与者之间的交互情况。每个Pool中的activity通常都有自身的流程。所以,Sequence Flow是不能穿越Pool的边界,而Message Flow就可以。它被用来表示两个不同流程之间消息的交互。


      Lane是Pool的子划分。它可以垂直也可以水平,用来对活动进行组织和分类。Lane常被用来将活动按角色划分,流程可以在一个Pool里跨Lane流转,也就是说Sequence Flow可以穿过Lane的边界。这种情况下,Message Flow就不可以。


      Artifacts 怎么翻译呢?一直找不到确切的中文意思,这里就直接使用英文吧。Artifacts是流程图中的扩展符号。它提供方法使得流程图可以具有描述更加详细活动的上下文的途径。Artifacts包括Data Object,Group,Annotation。
      Data Object 用来描述业务活动所需或者产生的数据。他们可以用Association与Activity连接起来。
      Group 组。用来描述和解释的。
      Annotation 注释。提供一些附加的文本信息给流程图的使用者和阅读者。

     

      BPD的合法性

      BPMN是有向图,在绘制时,会因为不小心造成业务流程模型无效,或者说是个不合法的模型。更高级的,我们有时会要求业务流程有一些特性,比如说时间上的优化。所以我们要对BPMN图进行合法性和有效性检查。这也是个难题。有过很多方法,我就无法展开介绍了。就合法性,我举个小例子。比如说我们在使用Gateway时就有可能出错。在正常的线型业务流程中使用了Gateway,就会出现分支,出现了分支,就有可能会出现死结或者无限循环,使得流程无法正常结束。气死了,不知道如何从PPT中考图,这里就无法描述了。最简单的吧,就是出现了分支,这个分支又指向了Gateway的前面的业务活动,如果这个Gateway是无条件转向的,那就会造成无限循环。

      BPMN to BPEL

      BPMN是图形化来表示业务流程的,它主要是为了人们的阅读。要想让BPMN所画出来的流程图能够被工作流引擎,特别是BPEL引擎所执行。我们就需要把BPMN的BPD图转化成BPEL。这种转化在BPMN中的规范中已经有介绍了。这里就不多说了。但在具体的转化过程中,还存在很多问题。这主要是因为BPD是一种有向图,而BPEL是一种严格嵌套的块结构执行语言。它们的转化就是要把一个有向图转化成嵌套结构。学过图论的同学,都会知道,这有一定的难度。当然也会有不同的办法去解决它。以后有机会我会详细介绍这部分的。

分享到:
评论

相关推荐

    Python库 | BPMN_RPA-4.2.9.tar.gz

    **BPMN简介** BPMN是一种图形化表示业务流程的国际标准,它通过一系列图形符号来描述流程的各个部分,如任务、事件、网关等,使得非技术人员也能理解流程逻辑。BPMN_RPA库将BPMN模型与RPA相结合,使得业务流程自动化...

    yaoqiang-bpmn-editor-5.5.1.jar

    简介: 一个方便和易于使用的图形化编辑器业务流程图,符合OMG规范(BPMN 2.0的)。遥墙BPMN编辑器是在Java编程语言编写,并可以帮助你创建你在任何时候需要在所有的图表。 特点: 无需安装 快速轻松地创建,查看,...

    camunda-bpmn:Camunda API的BPMN应用实例

    **BPMN简介** 业务流程建模与notation(BPMN)是一种图形化语言,用于定义和文档化企业的业务流程。BPMN符号丰富,可以表示各种流程元素,如开始事件、结束事件、任务、网关、泳道等,使得非技术人员也能理解流程图...

    bpmnjs在浏览器中查看和编辑BPMN20图表

    **一、BPMN 2.0简介** BPMN(Business Process Model and Notation)2.0是一种国际标准,用于图形化表示业务流程。它提供了一套统一的符号和规则,使得业务人员和技术人员之间能够更好地沟通流程设计。BPMN 2.0包含...

    业务流程建模标注(BPMN)详细介绍

    描述基本的BPMN符号,包括这些图元如何组合成一个业务流程图(BusinessProcessDiagram)2、BPMN简介2.1概述该文章的目的是对BPMN(BusinessProcessModelingNotation)的概要描述和介绍。描述基本的BPMN符号,包括这些...

    Flowable BPMN 用户手册

    要深入学习Flowable BPMN,建议首先阅读用户手册中的“简介”部分,了解其设计理念和主要功能。然后,可以逐章学习“流程定义”、“事件处理”、“任务管理”等章节,掌握基本概念和操作。对于高级功能,如规则引擎...

    introduction to bmpn

    #### 一、BPMN简介 **业务流程建模符号**(Business Process Modeling Notation,简称BPMN)是由**业务流程管理倡议**(Business Process Management Initiative,简称BPMI)开发的一种标准业务流程建模符号。BPMN 1.0 ...

    工作流后端.zip

    **BPMN简介** BPMN是一种业务流程建模标准,由 OMG(Object Management Group)制定,用于图形化地表示企业的业务流程。它提供了丰富的符号集,包括开始事件、结束事件、任务、网关、泳道等,使得业务人员和技术人员...

    Flowable BPMN 用户手册 (v 6.3.0).zip

    2. **BPMN 2.0简介**:解释BPMN的各种元素,如活动(任务、子流程)、网关(并行、 Exclusive)、事件(开始、结束事件)等,以及它们在流程图中的作用。 3. **Flowable API和DSL**:详细描述Flowable提供的Java ...

    Flowable 6.6.0 BPMN用户指南 第一部分

    BPMN用户指南第一部分,一共包含七章内容:(1)入门 (2)配置 (3)The Flowable API (4)Spring集成 (5)Spring Boot (6)部署 (7)BPMN 2.0简介

    XPDL 2.1白皮书

    - **BPMN简介**: BPMN是由业务流程管理倡议组织(Business Process Management Initiative, BPMI)开发的标准,旨在提供一种通用的图形表示法,使业务人员和技术人员能够共同理解和交流业务流程。 - **XPDL与BPMN的...

    BPMN2.0常用工具简介

    BPMN2.0(Business Process Model and Notation 2.0)是一种国际标准的业务流程建模语言,用于描述企业或组织的业务流程。它提供了丰富的图形化符号,使得流程设计者能够清晰地表达复杂的流程逻辑。在BPMN2.0中,...

    Flowable 6.6.0 BPMN用户指南 第一部分.pdf

    2021年3月最新修订版。BPMN用户指南第一部分,一共包含七章内容:(1)入门 (2)配置 (3)The Flowable API (4)Spring集成 (5)Spring Boot (6)部署 (7)BPMN 2.0简介

    BPMN_Prototype:BPMN环境的原型

    **BPMN简介** BPMN(Business Process Model and Notation)是一种国际标准的业务流程建模语言,由OMG(Object Management Group)制定。它为业务分析师、系统架构师和开发人员提供了一种可视化的方式来描述、设计...

Global site tag (gtag.js) - Google Analytics