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 | ![]() |
|
| 条件开始事件 | Conditional start event | Conditional | ![]() |
|
| 消息开始事件 | Message start event | Message | ![]() |
|
| 多重启动事件 | Multiple start event | Multiple | ![]() |
|
| 多重并行开始事件 | Parallel multiple start event | Parallel Multiple |
![]() |
|
| 信号开始事件 | Signal start event | signal | ![]() |
|
| 定时开始事件 | Timer start event | Timer | ![]() |
| 中文 | 英文 | Trigger | 说明 | Marker |
| 中间事件 | None Intermediate Event | None | ![]() |
|
| 消息事件 | Message Intermediate Event | Message | ![]() |
|
| 定时事件 | Timer Intermediate Event | Timer | ![]() |
|
| 升级事件 | Escalation Intermediate Event | Escalation | ![]() |
|
| 补偿事件 | Compensation Intermediate Event | Compensation | ![]() |
|
| 条件事件 | Conditional Intermediate Event | Conditional | ![]() |
|
| 链接事件 | Link Intermediate Event | Link | ![]() |
|
| 信号事件 | Signal Intermediate Event | Signal | ![]() |
|
| 多重事件 | Multiple Intermediate Event | Multiple | ![]() |
|
| 并行多重事件 | Parallel Multiple Intermediate Event | Parallel Multiple | ![]() |
| 中文 | 英文 | Trigger | 说明 | Marker |
| 结束事件 | None End Event | None | ![]() |
|
| 消息结束事件 | 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介绍的更多相关文章
- Activiti搭建
Activiti搭建 前期准备: JDK+Eclipse+Tomcat+Maven的安装与配置 参考:http://blog.csdn.net/zhshulin/article/details/307 ...
- C# 快速开发框架搭建—开发工具介绍
C# 快速开发框架搭建—开发工具介绍 一.VS2013,SQL SERVER R22008 以上两种工具如有不会者自行百度学习下. 二.动软代码生成器 对于经典的三层架构框架来说,使用动软代码生成器会 ...
- 嵌入式框架Zorb Framework搭建五:事件的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- Jmeter环境搭建及目录介绍
Jmeter环境搭建及目录介绍 运行环境:jmeter是基于java语言的,所有需要准备Java的JDK环境,并添加到环境变量中. 一.环境搭建及配置 1.JMeter的下载: 官网:http://j ...
- BBS项目分布搭建五(评论相关功能实现)
BBS项目分布搭建五(评论相关) 1. 根评论逻辑实现 # 在models.py文件中 修改: # 7. 评论表 parent = models.ForeignKey(to='self', null= ...
- activiti搭建(四)八项服务介绍
转载请注明源地址:http://www.cnblogs.com/lighten/p/5927949.html 1.前言 之前学习的时候一直在其它文章看到activiti提供了七个接口来操作工作流,但在 ...
- Activiti第一篇【介绍、配置开发环境、快速入门】
Activiti介绍 什么是Activiti? Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开 ...
- Activiti工作流引擎核心介绍
引言 Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速.超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更 ...
- activiti搭建(三)整合Modeler
转载请注明源地址:http://www.cnblogs.com/lighten/p/5878169.html 接上一章,activiti工作流引擎虽然运行了起来,但是什么都没有.activiti官方在 ...
随机推荐
- git config(转载)
From:http://www.g2w.me/2013/10/cache-github-credential-for-https-repository/ http://openwares.net/li ...
- Bug 是改不完滴
- jhat中的OQL(对象查询语言)
http://blog.csdn.net/wanglha/article/details/40181767 jhat中的OQL(对象查询语言) 如果需要根据某些条件来过滤或查询堆的对象,这是可能的,可 ...
- java利用过滤器实现编码的转换,内容输出的替换
在页面建个表单 <form action="login.do" method="post"> <input type="text&q ...
- ckfinder的配置使用
1.单纯的上传图片和预览图片 修改configasp中CheckAuthentication = true; 否则的话会报没有权限或修改配置错误 此时如果可以查看的话,单击图片应该是放大并且预览图片 ...
- centos 下安装.net core
先要安装libunwind, libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,32位操作系统不要安装.其中包括用于输出堆栈跟踪的API.用于以编程方式辗转开解堆栈的 ...
- 有向无环图(DAG)的最小路径覆盖(转)
DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...
- C#中的委托和事件(续)
转自张子阳的博客http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-Advanced.aspx 引言 如果你看过了 C#中 ...
- 那些年,我们开发的接口之:QQ登录(OAuth2.0)
那些年,我们开发的接口之:QQ登录(OAuth2.0) 吴剑 2013-06-14 原创文章,转载必须注明出处:http://www.cnblogs.com/wu-jian 前言 开发这些年,做过很多 ...
- bored
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...











































