一、工作流:
工作流(workflow)是指业务过程的部分或整体在计算机应用环境下的自动化,是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流主要解决的问题是:为了实现某个业务目标,利用计算机在多个参与者之间按照某种预定的规则自动传递文档、信息或者是任务。wfmc(工作流管理联盟)给出的定义是:工作流是指一类能够完全自动执行的经营过程,根据一系列的过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。
二、工作流引擎
所谓的工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。工作流引擎包括了流程的节点管理、流向管理、流程样例管理等重要功能。服务架构:良好的接口和契约联系起来。
三、Java工作流引擎
JBPM和Activiti之间的对比:
jbpm是目前市场上主流开源工作流引擎之一,在创建者Tom Baeyens离开了Jboss后,jbpm的下一个版本jbpm5完全放弃了jbpm4的基础代码,基于Drools Flow重新来过。目前官网已经推出了jbpm6的beta版,Tom Baeyens在加入了Alfresco之后,快速推出了新的基于jbpm4的开源工作流系统Acticiti
二者主要相似之处:
都是BPMN2过程建模和执行环境。都是BPM系统(符合BPM规范)。都是开源项目(遵循Apache的软件许可ASL协议)。都源自Jboss。
技术组成对比:
序号 | 技术组成 | Activiti | JBPM5 |
1 | 数据库持久层(ORM) | Mybatis3 | Hibernate3 |
2 | 持久化标准 | 无 | JPA规范 |
3 | 事务管理 | Mybatis机制/Spring事务控制 | Bitronix,基于JTA事务管理 |
4 | 数据库连接方式 | JDBC/DataSource | JDBC/DataSource |
5 | 支持的数据库 | oralce MySQL SqlServer等 | oralce MySQL SqlServer等 |
6 | 设计模式 | 命令模式和观察者模式 | 命令模式和观察者模式 |
7 | 内部通讯服务 | Service之间通过API调用 | 基于Apache Mina异步通讯 |
8 | 集成接口 | SOAP Mule RESTful | 消息通讯 |
9 | 支持的流程格式 | BPMN2 xPDL jpDL | BPMN2 xml |
10 | 引擎核心 | PVM(流程虚拟机) | Drools |
11 | 技术前身 | JBPM3、JBPM4 | Drools Flow |
12 | 所属公司 | Alfresco | Jboss |
Activiti5使用Spring进行引擎配置以及各个bean的管理,综合使用ioc和aop的思想,使用CXF作为WebService实现的基础,使用mybatis进行底层数据库ORM的管理。jBPM5采用jboss社区的大多数组件,以Drools Flow为核心组件作为流程引擎的核心构成,以hibernate作数据持久化,采用基于JPA/JTA的可插拔的持久化和事务控制规范,使用Guvnor作为流程管理仓库,能够与Seam、Spring、OSGi等集成。
优势对比:
从技术上来看,Activiti5最大的优势是采用PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有着良好的集成能力,延续了JBPM3、JBPM4良好的社区支持,服务接口清晰,链式API更加优雅;劣势是持久化层没有遵循JPA规范。
JBPM5最大的优势是采用的Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat的专业化支持;劣势是:对自身技术依赖过紧且目前仅支持JBPM2.
四、BPMN2.0规范
BPMN(Business Process Model and Notation):业务流程模型与符号
BPMN是一套流程建模的标准,主要目标是被所有业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现,知道最终用户的管理监控。通俗一点其实就是一套规范,画流程模型的规范,流程模型包括:流程图,协作图,编排图,会话图。
五、为什么选择Activiti而不是JBPM?
1、Activiti拥有更简洁健壮的接口
2、Activiti拥有更友好的用户体验
3、Activiti支持引擎启动后随时热部署
4、Activiti拥有更友好易用的Eclipse编辑插件和在线插件
5、Activiti所依赖的jar包更少