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官方在 ...
随机推荐
- Shell中set用法(转载)
使用set命令可以设置各种shell选项或者列出shell变量. 单个选项设置常用的特性. 在某些选项之后-o参数将特殊特性打开. 在某些选项之后使用+o参数将关闭某些特性, 不带任何参数的set命令 ...
- ubuntu 命令学习大全
http://wiki.ubuntu.org.cn/UbuntuSkills#.E6.98.BE.E7.A4.BA.E5.BD.93.E5.89.8D.E7.A1.AC.E4.BB.B6.E4.BF. ...
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...
- 在ubuntu下安装phpmyadmin 出现404错误
在ubuntu下安转phpmyadmin 只要一条命令: Sudo apt-get install phpmyadmin 安装完成后,在浏览器里输入http://localhost/phpmyadmi ...
- delphi SPCOMM 接收数据不完整!该如何解决
SPCOMM 接收数据不完整!该如何解决 SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时 ...
- USB枚举过程
1. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序.调试USB设备,很重要的一点就是USB的枚举过程,只 ...
- (easy)LeetCode 217.Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- ubuntu14.04开启crontab日志
ubuntu默认没有开启cron日志记录 1. 修改rsyslog sudo vim /etc/rsyslog.d/50-default.conf cron.* /var/log/cron.log # ...
- The specified system/compiler is not supported
之前安装了QT的4.5.3版本,现需要用到phonon库,因此卸载后想重新安装4.7版本,但当使用./configure编译时出现The specified system/compiler is no ...
- 《Code Complete》ch.11 变量名的力量
What? 如何给变量命名 Why? 易读(你三个月前的代码=别人的代码),易记,恰如其分 整齐的命名具有美感,强迫症患者居家旅行杀人放火之必备 How? 以问题为导向 好名字反映的是问题(what) ...