activiti搭建BPMN介绍

Posted dark_saber

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activiti搭建BPMN介绍相关的知识,希望对你有一定的参考价值。

    转载请注明源地址:http://www.cnblogs.com/lighten/p/5931207.html 

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

1.2 活动(Activities)P181

(1)Tasks 任务 P186

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

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

    其它的task:

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

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

(2)Sub-Processes 子流程 P203

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

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

image

image

    下面是一些用法:

imageimage

(3)Call Activity 调用活动 P213

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

imageimage

image

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

1.3 网关(Gateways)P317

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

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

2 数据(Data)P233

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

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

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

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

3 连接对象(Connecting Objects)P59

image

4 泳道(Swimlanes)

4.1 池子(Pools)

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

image

image

4.2 泳道(Lanes)

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

image

image

5 工件(Artifacts)

5.1 组(Group)

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

image

5.2 文字注释(Text Annotation)

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

image

以上是关于activiti搭建BPMN介绍的主要内容,如果未能解决你的问题,请参考以下文章

springboot整合activiti+bpmn-js或VUE(架构搭建篇)

Activiti BPMN 2.0 学习心得

工作流activiti eclipse 插件怎么生成bpmn文件

BPMN2新规范与Activiti5

activiti入门案例

activiti入门案例