`
grid.qian
  • 浏览: 56142 次
  • 性别: 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是一种严格嵌套的块结构执行语言。它们的转化就是要把一个有向图转化成嵌套结构。学过图论的同学,都会知道,这有一定的难度。当然也会有不同的办法去解决它。以后有机会我会详细介绍这部分的。

分享到:
评论

相关推荐

    yaoqiang-bpmn-editor-5.5.1.jar

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

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

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

    BPMN2.0常用工具简介

    BPMN2.0常用工具简介

    Flowable 6.6.0 BPMN用户指南 第一部分

    BPMN用户指南第一部分,一共包含七章内容:(1)入门 (2)配置 (3)The Flowable API (4)Spring集成 (5)Spring Boot (6)部署 (7)BPMN 2.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-js-bpmnlint:基于Bpmn-js的流程设计器校验实现

    基于bpmn-js的流程设计器校验实现简介它根据一组已定义的规则来验证您的图表,并将其报告为错误或警告。它可以从命令行检查您的BPMN图,或者通过将其集成到我们的:核心规则库的核心是用于检测BPMN图中某些模式的...

    Flowable从入门到精通

    3 BPMN2.0简介 3.1 什么是BPMN2.0 3.2 创建一个BPMN 3.2.1 直接编写XML文件 3.2.2 使用插件编写 3.2.2.1 在线安装插件 3.2.2.2 离线安装 3.2.2.3 插件使用说明 4 BPMN2.0组成 4.1 事件 4.1.1 事件定义 4.1.2 计时器...

    javascript 工作流设计器

    一个非常不错的工作流设计器,可以绘制各种图形。

    Vue+Bpmnjs整合设计器和查看器,支持高度自定义,基于github上的项目进行了深度优化

    项目简介: 一个基于 `bpmn.js`,`Vue 2.x` 和 `ElementUI` 开发的流程设计器。本项目从原项目衍生出来,升级了最新版本的bpmnjs,并升级到了vue2.7,支持新特性。 您可以使用它在浏览器上查看和编辑符合 `BPMN 2.0...

    JBPM 4.4开发指南和用户指南-中文.rar

    第 1 章 简介 1.1. 目标读者 这个开发指南是为了给有经验的开发者看的, 这样就可以获得jBPM 的完全的灵活性。在这个开发 文档中提及的特性 可能当前不会被支持到。请自行使用。 1.2. 概述 第 2 章 孵化器 解释了...

    Activiti-新一代的开源BPM引擎

    本文主要介绍Activiti的背景和基础知识,包括Activiti结构、基本服务和功能简介,开发环境的搭建以及主要功能的代码示例。Activiti其核心是BPMN2.0的流程引擎。BPMN是目前被各BPM厂商广泛接受的BPM标准,全称为...

    Activiti 5.13 中文用户手册

    Activiti_5.13_中文用户手册 1. 简介 2. 开始学习 3. 配置 4. Activiti API 5. Spring集成 6. 部署 7. BPMN 2.0介绍 8. BPMN 2.0结构 ... 详细讲解activiti入门,新手必备~

    Activiti基础视频教程下载

    支持BPMN2.0,其依赖的jar非常少,只依赖mybatis。上手迅速,功能丰富,对于一般的工作流应用都可以满足,什么是流程、工作流作用、Activiti背景简介、Activiti流程设计器安装、Activity环境搭建、通过HelloWorld掌握 ...

    Activiti6.0教程例子下载

    1.3.2. Activiti简介 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是...

    Activiti 5.14 中文用户手册

    1. 简介 2. 开始学习 3. 配置 4. Activiti API 5. Spring集成 6. 部署 7. BPMN 2.0介绍 8. BPMN 2.0结构 9. 表单 10. JPA 11. 历史 12. Eclipse Designer 13. Activiti Explorer 14. Activiti Modeler 15. REST API ...

Global site tag (gtag.js) - Google Analytics