Oracle BPEL vs jBPM

    Oracle BPEL和jBPM都是用来开发Workflow工作流的工具,一个是强势公司的收费产品,一个是免费的开源软件,还是很有代表性的。之前用Oracle BPEL用了近半年,虽然是其他人用,哈哈,但是大致的经验还是有的。现在又用jBPM开发,一个月了。拿他们来对比一下吧。

    以下关于Oracle BPEL的描述都是基于Oracle SOA suite的,我不知道在其他包,比如Oracle BPM里是什么样的。

1.工作流描述语言

    Oracle BPEL,听名字就知道是用BPEL了,到底是不是BPEL,我也不知道,呵呵,就算基于BPEL,肯定也有不少专有的东西存在的。Oracle BPEL都用JDeveloper拖拖拉拉图标来开发工作流,不用理后面的XML,而且后面的XML也是相当的复杂,基本上只有在出问题的时候去看看吧(JDeveloper开发的workflow经常出问题,招不到原因的时候只能重画,还在挺快,只是简单重复的工作很无趣,而且容易遗漏东西)。

    jBPM则使用JPDL语言,好像是专有的吧,现在也开始支持BPMN了,不过支持的很不好,只有非常简单功能。开发的话,基本上是手写JPDL的XML。XML schema很简单,写些简单的流程没什么问题,他也有一个基于eclipse的插件,没用过。

2.架构

    Oracle BPEL和jBPM从大结构上来说,都是一个java程序加一个DB。

    可以认为Oracle BPEL是基于Weblogic,Oracle DB的一个J2EE程序,能不能在其它服务器里跑? 应该行吧,不过估计很费劲,Oracle强势,基本上BPEL和Weblogic完全绑一起了,用了大量Weblogic提供的基础服务。现在的Oracle SOA suite 11g推迟了将近一年发布,就是因为原来是基于OC4J的,后来买了BEA就基于Weblogic重新集成了。DB的话只能Oracle的了。

    jBPM就没有这样了,它的程序可以跑在任何地方,甚至自己写一个java程序来包含的,其实就是一个ProcesEngine,爱在哪里启动在哪里启动,调用接口就完事。DB的话应该都行,反正MySQL,Oracle下都跑过,jBPM的测试还有基于内存数据库HSQL的。

3.基本集成

    外部程序和workflow的集成基本上体现在启动workflow,task管理(查询,更新等)上,还有些可能是比如JMS之类,这些和具体workflow相关的就不管。

    因为Oracle BPEL已经是一个J2EE程序了,其他程序要与它集成,只能调用它的接口。接口形式还是比较多的,web service, EJB, RPC好像都有,记得有5,6种吧。基本上我也比较支持调用接口来实现集成,要不然呢,后台的DB可是相当复杂,最关键是,接口已经挺齐全了,没必要自己做接口,以后升级还麻烦。

    jBPM的话,基本接口还是有的,查询方面就比较头痛,做的不是很好吧,后台表结构也还算简单,总共也就十几张。没法满足业务的时候就自己写吧。个人觉得,用jBPM这种产品,就要做好自己动手的准备,呵呵,毕竟是免费的。

4.Workflow具体集成

    在具体的workflow实现中,可能也要和外部做集成,比如要发一个消息到workflow触发某些动作,或者workflow要从外部取得一些数据。

    Oracle BPEL这方面封装很紧,还是因为已经是一个独立J2EE程序了,只能采用JMS或者web service之类方式。

    jBPM就灵活些,比较是一个程序嘛,把jBPM和应用程序放一起,甚至一个JVM里,爱怎么调怎么调了,事件触发,信号之类也很方便就能实现。

    顺便提一个现实的问题,如果要实现一个workflow,用户完成一个task后要实现查看下一个task是不是当前用户的,如果是,就打开下一个task。Oracle BPEL是没法实现的,因为调用是异步的,当完成一个task后,workflow什么时候往下走,要看引擎什么时候出发这个flow。而jBPM有同步和异步实现,默认是同步的,所以完成一个task后会把workflow也往下走了,下一个task能立即查到。

5.功能

   jBPM和BPEL在这方面可是没法比,完全不是一个数量级的,呵呵。两种产品里,workflow的一个个节点都叫Activity,就支持的类型来说BPEL比jBPM多很多,而且,jBPM里很多Activity支持的不很好,所以可用的并不多。好在jBPM比Oracle BPEL灵活很多,可以弥补很大不足。而且用到的Activity其实也不多的,主要也就是task之类的。

   jBPM说实话也太简单,基本上就是简单的控制workflow功能,历史变量在最新版本里才有,历史swimlane之类都没有,头疼的很。

6.开发

   开发速度来说各有优势吧,还需具体分析。Oracle BPEL优势在提供了大量现有功能可以方便调用;jBPM优势在灵活,所以在集成是会省很多事。总的来说,做workflow BPEL快,做集成jBPM快。

   在开发方面,最重要的是,jBPM给了程序员很大灵活性,而Oracle BPEL就比较死,做着做着就发现没兴趣了。这个很影响积极性的,呵呵。

 

基本上是个流水账~,简单介绍一些吧,不全,也有可能错了,理解还不够深也有可能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值