【升级篇】JBPM4.4过渡到Activiti

来源:互联网 发布:mac app store更改用户 编辑:程序博客网 时间:2024/04/30 19:11

简单介绍一下Activiti背景

 

Activiti的出现:

 

Activiti的创始人Tom BaeyensJBPM的创始人,由于与合作伙伴在JBPM的未来架构上产生意见分歧,Tom Baeyens2010年离开了JBoss并加入Alfresco公司。Tom Baeyens的离开使得JBPM5完全放弃了JBPM4的架构,基于Drools Flow重新开发。而在2010年的5月,Tom Baeyens发布了第一个Activiti版本(5.0alphal),由此看来,Activiti更像是JBPM4的延续,也许是为了让其看起来更像JBPM4的延续,Activiti团队直接将Activiti的第一个版本定义为5.0

 

选择Activiti还是JBPM

 

对于我们来说,JBPM5Activiti同样支持BPMN2.0规范,但是实际上JBPM5已经推翻了JBPM3JBPM4的架构,使用了Drools Flow作为工作流架构,这对于原来使用JBPM3JBPM4的用户来说是非常郁闷的一件事(从零开始重新学习JBPM5)。而Activiti更像是原来JBPM4的延续,因此对于原来使用JBPM3JBPM4的用户来说,推荐使用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.4Hibernate4.3结合出现不兼容问题。那么hibernate3hibernate4有什么区别?

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> 


总结

以上只是将JBPMActiviti简单进行对比,然后大家可以根据需要选择,虽然是比较,但不一定要有胜负,只有适合自己的才是最好的,而且无论是JBPM5还是Activiti来说都了解不是很深的我们,也没有太多的发言权,还需要在实践中慢慢体会。

对于不兼容的问题,也是这次我们项目将jbpm转换为Activiti的主要原因,说到底我们还是要深入理解一下各个框架的原理,对于不兼容问题,后续我们可以尝试重写方法实现。

资料:(jBPM(三):Spring 集成 jBPM4.3 (jBPM4+Hibernate4)

 



1 0