标签:
简单介绍一下Activiti背景
Activiti的出现:
Activiti的创始人Tom Baeyens是JBPM的创始人,由于与合作伙伴在JBPM的未来架构上产生意见分歧,Tom Baeyens在2010年离开了JBoss并加入Alfresco公司。Tom Baeyens的离开使得JBPM5完全放弃了JBPM4的架构,基于Drools Flow重新开发。而在2010年的5月,Tom Baeyens发布了第一个Activiti版本(5.0alphal),由此看来,Activiti更像是JBPM4的延续,也许是为了让其看起来更像JBPM4的延续,Activiti团队直接将Activiti的第一个版本定义为5.0。
选择Activiti还是JBPM
对于我们来说,JBPM5和Activiti同样支持BPMN2.0规范,但是实际上JBPM5已经推翻了JBPM3和JBPM4的架构,使用了Drools Flow作为工作流架构,这对于原来使用JBPM3和JBPM4的用户来说是非常郁闷的一件事(从零开始重新学习JBPM5)。而Activiti更像是原来JBPM4的延续,因此对于原来使用JBPM3和JBPM4的用户来说,推荐使用Activiti。但是由于JBoss中有一些优秀的项目,JBPM5与这些项目进行整合具有先天的优势,因为如何选择还需要权衡。
Activiti5与jBPM5技术组成对比
序号 |
技术组成 |
Activiti |
jBPM5 |
1 |
数据库持久层ORM |
MyBatis3 |
Hibernate3 |
2 |
持久化标准 |
无 |
JPA规范 |
3 |
事务管理 |
MyBatis机制/Spring事务控制 |
Bitronix,基于JTA事务管理 |
4 |
数据库连接方式 |
Jdbc/DataSource |
Jdbc/DataSource |
5 |
支持数据库 |
Oracle、SQL Server、MySQL等多数数据库 |
Oracle、SQL Server、MySQL等多数数据库 |
6 |
设计模式 |
Command模式、观察者模式等 |
|
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.org |
Activiti5使用Spring进行引擎配置以及各个Bean的管理,综合使用IoC和AOP技术,使用CXF作为WebServices实现的基础,使用MyBatis进行底层数据库ORM的管理,预先提供Bundle化包能较容易的与OSGi进行集成,通过与MuleESB的集成和对外部服务(Web Service、RESTful等)的接口可以构建全面的SOA应用;
jBPM5使用jBoss.org社区的大多数组件,以DroolsFlow为核心组件作为流程引擎的核心构成,以Hibernate作为数据持久化ORM实现,采用基于JPA/JTA的可插拔的持久化和事务控制规范,使用Guvnor作为流程管理仓库,能够与Seam、Spring、OSGi等集成。
需要指出的是Activiti5是在jBPM3、jBPM4的基础上发展而来的,是原jBPM的延续,而jBPM5则与之前的jBPM3、jBPM4没有太大关联,且舍弃了备受推崇的PVM(流程虚拟机)思想,转而选择jBoss自身产品DroolsFlow作为流程引擎的核心实现,工作流最为重要的“人机交互”任务(类似于审批活动)则由单独的一块“Human Task Service”附加到DroolsFlow上实现,任务的查询、处理等行为通过Apache Mina异步通信机制完成。
优劣对比:
从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。
jBPM最大的优势是采用了ApacheMina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat(jBoss.org被红帽收购)的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。
再结合项目(hibernate4.3)来说为什么从JBPM4.4转变为使用Activiti
JBPM4.4与Hibernate4.3结合出现不兼容问题。那么hibernate3和hibernate4有什么区别?
http://hi.baidu.com/austincao/item/fc9907da3d854e44fa576861
附:Hibernate3的配置:
<!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> </bean>
总结
以上只是将JBPM与Activiti简单进行对比,然后大家可以根据需要选择,虽然是比较,但不一定要有胜负,只有适合自己的才是最好的,而且无论是JBPM5还是Activiti来说都了解不是很深的我们,也没有太多的发言权,还需要在实践中慢慢体会。
对于不兼容的问题,也是这次我们项目将jbpm转换为Activiti的主要原因,说到底我们还是要深入理解一下各个框架的原理,对于不兼容问题,后续我们可以尝试重写方法实现。
资料:(jBPM(三):Spring 集成 jBPM4.3 (jBPM4+Hibernate4))
标签:
原文地址:http://blog.csdn.net/hejingyuan6/article/details/43701603