Activiti6 - 第一篇:工作流概述
前言
在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计和生成报表的功能,需要经过大量的手工操作才能实现。
随着计算机的普及,这些工作的参与者只需要在计算机的系统中填入工作内容,系统就会按照预先定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率。
在这种背景下,各种的工作流应用以及中间件应运而生。
基本概念
-
工作流(workflow):
是对工作流程及其各种操作步骤之间业务规则的抽象、概括、描述。 -
工作流建模:
将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型 进行表示并对其实施计算
BPMN2.0规范简述
早在20世纪70年代,办公自动化概念出现的时候,工作流思想就已经出现,人们希望新的技术可以改善,但是由于当时计算机没有普及,网络技术还不普遍等原因工作流技术仅仅提留在研究领域,到了20世纪90年代以后,各种技术条件逐渐成熟,工作流技术被应用于电信、软件、制造、金融和办公自动化领域。
随着工作流技术的兴起,为了给全部业务的参与者提供易于理解的标准标记法,由业务流程管理倡议组织(BPMI)开发出了“业务流程建模标记法”(Business Process Modeling Notation),简称BPMN。
BPMN规范1.0版本由BPMI组织于2004年发布,BPMN规范的发布是为了让业务流程的全部参与人员可以对流程进行可视化管理,BPMI组织于2005年合并到OMG(Object Management Group)组织中,2008年1月发布BPMN1.1规范。
BPMN2.0规范于2011年1月正式发布,并且全称改为Business Process Model And Notation(业务流程和建模符号),它继承了1.0版本的内容,并且注重流程执行语法和标准格式转换
BPMN2.0元素
BPMN中定义了5个基础的元素类别:
-
流对象(Flow Objects)
在一个业务流程中,流对象是用于定义行为的图形元素
主要有事件(Events)、活动(Activities)和网关(Gateway)三种流对象 -
数据(Data)
主要有数据对象(Data Objects)、数据输入(Data Inputs)、数据输出(Data Outputs)和数据存储(Data Store)4种元素 -
连接对象(Connecting Objects)
用于连接流对象,主要有4中连接流对象的方式,包括顺序流(Sequence Flows)、消息流(Message Flows)、关联(Associations)和数据关联(Data Assocations) -
泳道(Swim Lanes)
泳道提供了两种途径用于组织基础的模型元素,分别是池(Pools)和道(Lanes) -
制品(Artifacts)
制品主要用于为流程提供附加信息,当前制品包括组(Group)和注释(Text Annotation)
Activiti介绍
当BPMN2.0规范在2011年被发布时,各个工作流引擎的供应商均向其靠拢,包括jBPM5和Activiti。
Activiti的第一个版本为5.0alphal,一直到2010年12月发布了Activiti5.0的正式版中间经历了4个alphal版本、2个beta版本、1个rc版本,直到5.0正式版才出现对BPMN2.0规范的支持,Activiti6.0于2017年5月发布。
Activiti的创始人Tom Baeyens原是jBPM的创始人,由于在jBPM的未来架构上产生意见分歧,Tom Baeyens于2010年离开了jBoss并加入Alfresco公司,Tom Baeyens的离开使得jBPM5完全放弃了jBPM4的架构,基于Drools Flow重新开发。
而在2010年的5月Tom Baeyens发布了第一个Activiti版本(5.0alphal),由此看来它更像是jBPM4的延续,也许为了让其看起来更像jBPM4的延续,Activiti团队直接将Activiti的第一个版本定义为5.0.
Avtiviti和jBPM对比
技术组成 | Activiti5 | jBPM5 |
---|---|---|
数据库持久层ORM | MyBatis3 | Hibernate3 |
持久化标准 | 无 | JPA规范 |
事务管理 | MyBatis机制/Spring事务控制 | Bitronix,基于JTA事务管理 |
数据库连接方式 | Jdbc/DataSource | Jdbc/DataSource |
支持数据库 | Oracle、SQL Server、Mysql等多种数据库 | Oracle、SQL Server、Mysql等多种数据库 |
设计模式 | Command模式、观察者模式 | |
内部服务通讯 | Service间通过API调用 | 基于Apache Mina异步通讯 |
集成接口 | SOAP、Mule、RESTful | 消息通讯 |
支持的流程格式 | BPMN2、xPDL、jPDL等 | 目前仅支持BPMN2 xml |
引擎核心 | PVM(流程虚拟机) | Drools |
技术前身 | jBPM3、jBPM4 | Drools Flow |
所属公司 | Alfresco | jBoss.org |