BPEL入门记——Milestone2&3

四、异步BPEL——需要一个测试方法

很简单,异步的Web service怎么测试?用一个同步的Test case。那就用一个同步的BPEL来测异步BPEL吧!但请注意:如果异步的原因是兼顾系统效率,那就需要对测试的效率有一定的心理准备了。所以BPEL会有专门的Test Case Suit。当然,我只保证在Oracle的产品中有,而且对测试条件限制得很死...这的确很烦人。

对于一个程序员来说,被拘束在图形界面上本来就很郁闷了,测试也这样就更郁闷。但完全用代码写Web service的客户端,也不轻松。可以做一个设想:利用BPEL引擎实现一个BPEL元素的接口和工厂,支持annotation,这样的话,我们可以用最简单的代码来模拟BPEL执行,而后台仍然是BPEL引擎的自有逻辑,顺便可以利用annotation生成BPEL什么的,可以做成Test Driven的架构......有工夫我还真想做做,选择几个开源的流程引擎(甚至可以做jBPM)来模拟Appfuse做,一定很有意思。后来有在eclipse STP项目中看到一个叫做B2J(BPEL to Java)的项目,还在孵化期,好像可以用来运行BPEL,兴许和这个想法有关吧。

五、从流程分类说起

流程和流程不一样,反映在用同步,还是异步,是不是顶层流程。从应用看,最常见的流程是审批流程,其次是流水线,可以想到的还有生命周期流程。仔细想想,流水线作为流程其实应该还可以分为两类,一个是绑定在实物生产线上的虚拟流水线,其意义在于维护管理信息与实物的一致性;另一个则是信息生产线,完成一些传递数据,辅助人工补充、清洗和统计的工作。可以说,任何一个流程都是流程本身的生命周期。从OO的角度看,一个重要业务对象的生命周期流程应该是最顶层的流程,比如对应CRM中一个客户的生命流程,对应HR中一个员工的生命流程,对应ERP中一件产品、一张票据、一个资产单元的生命周期。另外需要特别强调的有两件事。一个是关于周期性流程,它是企业本身生命周期流程在一个角度的展现,它描述的是从企业诞生之日起,就会有的一些每月、每年需要做的事情,其中比较多的应当是一些统计报表之类的需求。另外就是超出计划,无法预计的发起的流程,这种流程可以仅仅是一个活动的生命周期,比如促销、集体休假等,而这个活动的计划可能仅仅是在流程发起前确定的。在顶层流程中有计划(计划可以算是超出BPEL的Main流程)地发起流水线流程,流水线之间和内部用审批流程来形成控制点,使流程更具弹性,可以容纳更多的无计划流程,就行成了一个完整的流程解决方案。

六、协作

对于BPEL来说,流程越异步越好(因为BPEL开销大,可能慢),流程越大越好(因为BPEL开销大,实例数越少越好),隐含一个推论——BPEL越少越好,越扁平越好。那么,BPEL最好不要同时处理数据、业务和流程,只要不牵扯状态迁移的事情,只要能交给业务系统的事情,都不要让BPEL来做,才能绕过BPEL的效率问题,才能凸现流程与管理的密切关系。那么,被降低的需求去哪里了?一部分被优化成串行分支了,一部分被交给业务系统了,另一部分,则可以交给BPEL他爸——ESB去处理。ESB的核心功能似乎是服务路由,可以实现服务的进一步封装,并在封装的同时整合数据。据此,把业务交给业务系统,数据传输交给ESB的工作就完成了,剩下的,就是如何设计顶层流程了。

七、最好还是用Eclipse做开发

其实最早Oracle BPEL Designer也是一个Eclipse插件,但不知啥时候开始...我觉得很恶心,就变成了Jdeveloper插件了,以至于我们这些初学者都很简单地被Oracle拖住了。但所幸Eclipse除了STP外也在进行BPEL项目,其中最核心的,又是一个Designer。可惜得很,这个项目还在孵化。没办法我就翻了很多老皇历,发现很久很久以前,有个ActiveBPEL,完全是开源的,包括Tomcat应用形式的BPEL引擎和Eclipse插件形式的designer。这倒是很振奋人心。但是,可惜,现在虽然还有开源的ActiveBPEL引擎,designer却只能在商用的ActiveVOC中找到了。

不过,比较好的是,我们还有Eclipse BPEL,而ActiveBPEL又是通过Web Service和一个XML描述文件来发布流程的,所以,完全可以DIY一个自己的开发环境。不过,鄙人很懒,很坏...所以,用了3个小时crack了ActiveVOC中的ActiveBPEL Designer5,您可以访问http://servclipse.sourceforge.net/downloads/来下载它(另外两个下载项分别是Codepro5的crack,大约是去年这个时候做的,还有我的得意之作TopRunnerAll,又名Servclipse,这可以帮助Eclipse更好地完成一些命令行操作,推荐使用)。

但麻烦不止于此。首先,ActiveBPEL5还不是很稳定,而且也只支持Tomcat5.5,所以要慎重选择版本,架设好了服务器后,可以将其声明成Windows服务,用Servclipse配在ActiveBPEL5 Designer里面(不要忘了crack,会用eclipse的人都会用这个crack)。然后就是,Designer里面内置了一个测试用的引擎(用这个引擎做BUnit测试,就像JUnit一样,很好用),用了Tomcat的3个默认端口,所以咱们的服务器就不能用这三个端口。再然后,ActiveBPEL5 Designer自动生成的部署脚本有那么点问题,因为那是为ActiveBPEL5引擎做的,多了一个属性,可以手工去掉再进行部署。嗯,最后一个我也没解决的问题是,ActiveBPEL的流程似乎不能undeploy......好在重装服务器都很容易,而且本来就是用来调试。

搞定后再迁到jdeveloper上进行部署就很爽了。

八、Milestone3——您应该自己试试了!

附:Eclipse Plugin Crack方案:用PDE按Binary导入插件,然后用jadclipse反编译、调试,最后用crack的类替代原来的类就行了。Java程序大都存在入口性质的完全可反编译的类的,所以几乎所有Java程序都可以通过调试找到这么个类,即可以改,又起到关键作用...见招拆招,可以最大程度发挥自己想象力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值