首页 > 代码库 > activiti搭建(五)BPMN介绍

activiti搭建(五)BPMN介绍

    对于BPMN我也不是十分清楚,目前也只是因为对于Modeler中不熟悉的组件查询,来对这部分的内容进行学习,不求一次理解,边学边理解吧。所以这一章的介绍会比较简单,但也足够了。

    Modeler中的组件列表划分和BPMN的略微有些不同,而且有些内容好像也没有,最后移植到自己的demo中,还遇到了一些问题,如果可能的话,之后会详细介绍一下Modeler的构成,大致是官方文档的第七节Overview以及第十节Process(重要),网上已有人将其归纳总结过了 http://wenku.baidu.com/view/92b1bc06cc17552707220854.html?from=search,可以直接看这个链接中的内容。我下面的是对其与官方文档校对之后的内容,说明这栏没有翻译(太耗时)。

    BPMN(Business Process Modeling Notation),业务流程建模与标注,可以用其定义的一系列符号(我称为组件)组成业务流程图。接下来分类别来介绍这些组件。官方网站:http://www.bpmn.org/ 里面有BPMN v2.0的介绍和例子,如果有不懂的可以查看一下。http://www.omg.org/spec/BPMN/2.0/ 文档以及XML校验文件XSD下载地址。这里面才是详细介绍,不过都是英文的,我也懒得看了,只是一些基础应用而已,如果有需要的时候再看。http://www.omg.org/cgi-bin/doc?dtc/10-06-02 这里是官方给的一些例子,教导你如何使用这些组件。

1 流对象(Flow Objects)

    流对象是最为基础的概念了,十分重要。

1.1 事件(Events)P271

    事件都是用一个圆圈来代表,影响流程的流动,一般有一个原因(trigger)或者一个影响(result)。标准定义了三种事件:开始,中间和结束。从定义和分类名称上来看也能猜到事件的作用了,控制流程的开始,中间流转和结束,这些控制可能采取触发器(trigger)来完成,或者是导致一个结果(结束或抛出)。

(1)开始事件

中文

英文

Trigger

说明

Marker

开始事件Start EventNone 技术分享
条件开始事件Conditional start eventConditional 技术分享
消息开始事件Message start eventMessage 技术分享
多重启动事件Multiple start eventMultiple 技术分享
多重并行开始事件Parallel multiple start eventParallel
Multiple
 技术分享
信号开始事件Signal start eventsignal 技术分享
定时开始事件Timer start eventTimer 技术分享
(2)中间事件 Intermediate event
    中间事件的使用有两种方式:
      1.出于两种目的在一个正常的工作流中放置中间事件:中间事件可以用于“catch”事件触发器,或者是“throw”事件出发器。
      2.一个中间事件放置于一个活动(Activity)中间,仅能够用于“catch”事件触发器,也就是捕获一个事件,做相应的处理。
中文英文Trigger说明Marker
中间事件None Intermediate EventNone 技术分享
消息事件Message Intermediate EventMessage 技术分享
定时事件Timer Intermediate EventTimer 技术分享
升级事件Escalation Intermediate EventEscalation 技术分享
补偿事件Compensation Intermediate EventCompensation 技术分享
条件事件Conditional Intermediate EventConditional 技术分享
链接事件Link Intermediate EventLink 技术分享
信号事件Signal Intermediate EventSignal 技术分享
多重事件Multiple Intermediate EventMultiple 技术分享
并行多重事件Parallel Multiple Intermediate EventParallel Multiple 技术分享
    中间事件原不止这些,剩余的是和activiti boundary相关的,这里就不一一列举了,具体查看官网文档P284页。
(3)结束事件 End Event
    结束事件必须是一个顺序流的目标,不能是源头,可以有多个顺序流指向同一个结束流。一个流程可以有多个结束事件,也可以没有结束事件,但是如果存在开始事件,就必须有至少一个结束事件。如果不使用结束事件,那么所有流对象没有任何流出序列(顺序)流(即不同为一个源序列流)来标志流程过程结束。流程不会结束,直到所有的并行路径完成了。
中文英文Trigger说明Marker
结束事件None End EventNone 技术分享
消息结束事件Message
End Event
Message 技术分享
错误结束事件Error
End Event
Error 技术分享
升级结束事件Escalation
End Event
Escalation 技术分享
取消结束事件Cancel
End Event
Cancel 技术分享
补偿结束事件Compensation
End Event
Compensation 技术分享
信号结束事件Signal
End Event
Signal 技术分享
终止结束事件Terminate
End Event
Terminate 技术分享
多重结束事件Multiple
End Event
Multiple 技术分享

1.2 活动(Activities)P181

(1)Tasks 任务 P186

    task在流程流中是一个原子性的活动,当流程中的作业不能被打断时task被用作一个更细级别的细节。通常,一个终端用户或者应用其执行操作表现为task的形式。task对象在子流程中具有相同的形状,都是长方形有着圆角。

    有三种特殊的task图标:循环、多重实例和补偿,一个task可能会有一个或两个这类图标。 技术分享

    其它的task:

中文英文说明图标
服务任务Service Task 技术分享
发送任务Send Task 技术分享
接收任务Receive Task 技术分享
用户任务User Task 技术分享
手工任务Manual Task 技术分享
业务规则任务Business Rule
Task
 技术分享
脚本任务Script Task 技术分享

    这些任务中,需要人参与自身完成的有Manual Task和User Task。Manual Task是一个不受任何商业流程引擎管理的任务,User Task是。不受管理意味着流程引擎无法追踪其任务的开始和完成。举个例子,这个可能就是一张充满指令的纸,为电话技术人员帮顾客安装电话。

(2)Sub-Processes 子流程 P203

    子流程是一个活动的内部细节建模,使用活动、事件和网关以及序列流。子流程是流程内部的一个图形对象,但是它也能够被打开来展现更低一层的流程。子流程定义了一个上下文范围,可用于属性可见性、事务的范围,异常处理,事件或者是补偿。

    BPMN定义了五种子流程,其中Collapsed Sub-Process可以被另外四种组合取代。另外四种是loop、multi-instance、Compensation、Ad-Hoc。

技术分享

技术分享

    下面是一些用法:

技术分享技术分享

(3)Call Activity 调用活动 P213

    调用活动确定使用了全局流程或者全局任务的流程中的一点。调用过程用作为包装器来调用全局流程或全局任务执行中。激活调用活动将导致称为全局流程或者全局任务的控制转移。

技术分享技术分享

技术分享

    调用活动必须满足数据要求,同时调用CallableElement返回数据。这意味着在活动的InputOutputSpecification中需要包含这些元素,并且必须精确的和CallableElement的元素匹配。这些元素包括:DataInputs、DataOutputs、InputSets、OutputSets。

1.3 网关(Gateways)P317

    网关用于控制序列流如何在一个流程中收敛和发散的交互。如果一个流程不需要控制,那么网关就是非必需的。“网关”一词意味着有一个门机制。允许或不允许通过网关——也就是说,执行到网关的时候,当网关机制被调用,输入可以被合并在一起,或者输出分离成若干部分。

中文英文说明图标
互斥网关Exclusive Gateway 技术分享
事件网关Event-Based
Gateway
 技术分享
并行事件网关Parallel
Event-Based
Gateway
 技术分享
相容网关Inclusive Gateway 技术分享
复杂网关Complex Gateway 技术分享
并行网关Parallel Gateway 技术分享

2 数据(Data)P233

    传统的流程建模要求能够模拟物品(物理或信息的)在流程中的创建、操作和执行过程。重要的方面就是能够捕获数据的结构,并且查询或者操作结构。

    BPMN本身并不提供内置的模型来描述数据结构或查询数据的语言表达式。相反,它规范hooks来允许使用外部定义的数据结构和表达式语言。此外,在同一个模型中,BPMN允许不同的数据结构和表达式语言。这些语言的兼容性和验证是在规范的范围之外,变成了工具供应商的职责。

    BPMN使用XML Schema和XPath作为其默认的数据结构和表达式语言,但是供应商可以自由替换他们自己的语言。

中文英文说明图标
数据对象Data Object 技术分享
集合型数据对象collection
DataObject
 技术分享
数据存储Data Store 技术分享
输入数据Data Input 技术分享
输出Data Output 技术分享
    还有一些其它的用法,具体看官方文档。

3 连接对象(Connecting Objects)P59

技术分享

4 泳道(Swimlanes)

4.1 池子(Pools)

    池是一个容器,与其他的池相隔离。通常用在交互流程中。池主要作用于两个独立的实体或者参与者之间的物理划分。各个池中的活动通常是有自身的流程的。因此,顺序流通常不会越过多个池,而消息流是可以的(这段话摘自:http://wenku.baidu.com/view/59b540d228ea81c758f5783c.html?from=search)

技术分享

技术分享

4.2 泳道(Lanes)

    Pool的子划分,可以垂直或者水平,用来对活动的组织和分类。Lane更加接近我们传统的泳道的概念。Lane常用来将活动按照角色划分,流程可以在一个pool中跨Lane流转,但是在一个pool中一般不会这样(出处与上面相同)。

技术分享

技术分享

5 工件(Artifacts)

5.1 组(Group)

    将一部分元素按逻辑或特定目的进行分组,便于查看和管理,用于解释和描述目的,不会影响流程的流转(出处同上)。

技术分享

5.2 文字注释(Text Annotation)

    提供一些附加性的文本信息给流程图的阅读者。

技术分享

activiti搭建(五)BPMN介绍