深入了解jBPM5与Activiti之间的差异对比

jBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官网已经推出了jBPM6的beta版本;Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。由此可以推测JBoss内部对jBPM未来版本的架构实现产生了严重的意见分歧。本文试着对二者做一些比较。

主要相似之处:

都是BPMN2过程建模和执行环境。 都是BPM系统(符合BPM规范)。 都是开源项目-
遵循ASL协议( Apache的 软件许可)。 都源自JBoss(Activiti5是jBPM4的衍生,jBPM5则基于Drools Flow)。 都很成熟,从无到有,双方开始约始于2年半前。
都有对人工任务的生命周期管理。 Activiti5和jBPM5唯一的区别是jBPM5基于WebService - HumanTask标准来描述人工任务和管理生命周期。 如有兴趣了解这方面的标准及其
优点,可参阅WS - HT规范介绍 。 都使用了不同风格的 Oryx 流程编辑器对BPMN2建模。 jBPM5采用的是 Intalio 维护的开源项目分支。 Activiti5则使用了Signavio维护的分支。

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作为Web Services实现的基础,使用MyBatis进行底层数据库ORM的管理,预先提供Bundle化包能较容易的与OSGi进行集成,通过与Mule ESB的集成和对外部服务(Web Service、RESTful等)的接口可以构建全面的SOA应用;jBPM5使用jBoss.org社区的大多数组件,以Drools Flow为核心组件作为流程引擎的核心构成,以Hibernate作为数据持久化ORM实现,采用基于JPA/JTA的可插拔的持久化和事务控制规范,使用Guvnor作为流程管理仓库,能够与Seam、Spring、OSGi等集成。

需要指出的是Activiti5是在jBPM3、jBPM4的基础上发展而来的,是原jBPM的延续,而jBPM5则与之前的jBPM3、jBPM4没有太大关联,且舍弃了备受推崇的PVM(流程虚拟机)思想,转而选择jBoss自身产品Drools Flow作为流程引擎的核心实现,工作流最为重要的“人机交互”任务(类似于审批活动)则由单独的一块“Human Task Service”附加到Drools Flow上实现,任务的查询、处理等行为通过Apache Mina异步通信机制完成。

优劣对比:

从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。

jBPM最大的优势是采用了Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat(jBoss.org被红帽收购)的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。

总结:

虽然是比较,但不一定要有胜负,只有适合自己的才是最好的,要针对具体的项目区别对待。对我们自己的项目,其实我更关注的是流程引擎的执行效率以及性能,每小时几十万甚至上百万的流程需要执行,需要多少个服务,集群、负载的策略是什么,会不会有冲突?目前这方面的资料还是比较少的,很多问题只有实际遇用到的时候才会去想办法解决。不过就我个人的感觉而言,Activiti上手比较快,界面也比较简洁、直观,值得一试,不过jBPM6的beta版也已经出来了,不知道会有什么变化,有兴趣的也可以试下。

文章相关课程 国内首部基于JBPM5.4实战流程引擎开发(动态
表单、模板引擎、公文管理系统) 基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件)

时间: 2024-07-29 04:23:23

深入了解jBPM5与Activiti之间的差异对比的相关文章

link环境下制作一款《订餐软件》,门店之间的差异数据,如同统一规格化

问题描述 link环境下制作一款<订餐软件>,门店之间的差异数据,如同统一规格化 link环境下制作一款<订餐软件>,门店之间的差异数据,如同统一规格化?数据的融合是怎么做到的? 解决方案 不同的数据的统一一个是表格形式的统一,一个是参数规格的统一,这些都要详细在文档中写清楚. 解决方案二: 问问问题也就可以了,这个还是自食其力吧

javascript判断是否按回车键并解决浏览器之间的差异_javascript技巧

复制代码 代码如下: <li class="item pin"> <span class="overlabel" style="display: block;">请输入验证码</span> <input type="text" class="txt" id="checkNum" name="checkNum" maxlengt

谈谈网站与网站之间的差异

中介交易 SEO诊断 淘宝客 云主机 技术大厅 前段时间我撰写了一篇<戏说网络公司与中小企业的博弈>的文章,简单描述了金融危机前后网络公司与中小企业博弈的变化,宏观国际市场的变化直接影响未来网络营销市场的格局.中小企业对网站和网络营销赋予的期望值大大提升,从而促使需要更高质量,更高技术标准的网络公司逐步走俏市场.实在的网站效果是衡量网站价值的唯一指标,同样企业在网络营销的投入将水涨船高,逐渐趋向到价格等于价值,高品质营销型网站 = 高投入 = 高回报. 前几天一个很好的朋友让我帮忙修改一个企业

《机器人爱好者(第2辑)》——警用、安保和军用机器人之间的差异

警用.安保和军用机器人之间的差异 人们可能会认为,这3种类型的机器人可以互换使用,然而事实并非如此.典型的警用机器人可能会在连续充电的几个月内保持锁定状态,直到将其派上用场.警用机器人必须能够承受崎岖地形以及被犯罪嫌疑人粗暴对待的考验,可能还要配备用于处理疑似炸弹或不明物体的机械手臂.它通常由经过培训的人员远程操作,还应具备卓越的高清视觉系统. 安保机器人经常在白天或夜间工作,而且必须是连续运行.这种机器人类似于图5所示的IAI Guardium,这个高尔夫球车大小的自主装置正在对机场进行巡逻.

git 对比两个commit 之间的差异

git 对比两个commit 之间的差异 比较两个版本之间的差异 git diff commit-id-1 commit-id-2 > d:/diff.txt 结果文件diff.txt中: "-"号开头的表示 commit-id-2 相对 commit-id-1 减少了的内容. "+"号开头的表示 commit-id-2 相对 commit-id-1 增加了的内容.

《Python自动化运维:技术与最佳实践》一2.1 文件内容差异对比方法

2.1 文件内容差异对比方法 本节介绍如何通过difflib模块实现文件内容差异对比.difflib作为Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与Linux下的diff命令相似.我们可以使用difflib对比代码.配置文件的差别,在版本控制方面是非常有用.Python 2.3或更高版本默认自带difflib模块,无需额外安装,我们先通过一个简单的示例进行了解. 2.1.1 示例1:两个字符串的差异对比 本示例通过使用difflib模块实

《Python自动化运维:技术与最佳实践》一2.2 文件与目录差异对比方法

2.2 文件与目录差异对比方法 当我们进行代码审计或校验备份结果时,往往需要检查原始与目标目录的文件一致性,Python的标准库已经自带了满足此需求的模块filecmp.filecmp可以实现文件.目录.遍历子目录的差异对比功能.比如报告中输出目标目录比原始多出的文件或子目录,即使文件同名也会判断是否为同一个文件(内容级对比)等,Python 2.3或更高版本默认自带filecmp模块,无需额外安装,下面进行详细介绍. 2.2.1 模块常用方法说明 filecmp提供了三个操作方法,分别为cmp

分享下mysql各个主要版本之间的差异

因为mysql的版本较多,而且又被oracle公司收购,所有很多朋友不是很清楚各个版本的区别,这里简单介绍下,方便需要的朋友   一.各版本的常用命令差异 show innodb statusG mysql-5.1 show engines innodb statusG mysql-5.5 关于grant授权 mysql-5.5 的 user@'%'不包含localhost 二.MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别 mysql-server-4.1 增加了子查询的支

不同CSS技术及其CSS性能之间的差异

 一.为什么我要测试CSS的性能    这是背景:   我是OOCSS(译者注:面向对象CSS)的忠实粉丝.但是最近工作,我一直使用Compass,SASS(译者注:SASS使CSS函数化,有诸如变量,嵌套,混合,继承等特性,需Ruby支持).我有时候感觉到OOCSS和SASS似乎有点古怪.我的一个朋友把我介绍给了Chris Eppstein(Compass的创建者),我们就SASS中的@extend方法进行了探讨.所以我决定创建一个CSS测试页面,用一种很原生态的方式来显示是否SASS的@ex