最近项目很变态,硬是要把Domino的东西往J2EE上搬,说什么文档型数据库无法跨越系统,我觉得如果照目前电信的系统结构来说,就算把Domino上的所有东西,包括process都搬到J2EE上,也无法解决各个系统之间很好协作的问题,Portal和统一认证已经在某种程度上帮了大忙,如果实在很想各个应用系统之间进行数据交互,开发webservice接口就ok了,甚至在系统开始规划的时候就不应该出现Domino这种东西,现在想起关系型数据库的好来了,未免累死了开发人员,所以我还是秉持我自己的原则:我们无限制的追求软件程序的完美,并不是为了那帮傻逼客户,而是为了让我们之后的程序员能够以更少的精力来更轻松的拿这份工资! 牢骚完毕来说说目前的J2EE做法。既然涉及到流程,那不免就那两种,WFMC和BPEL,我们选择BPEL,原因是IBM支持BPEL,不要问我两种东西那种更优秀,我会告诉你:你搞清楚了也没意义,用户只相信IBM。 既然用BPEL,IBM的Websphere Process Server首当其冲,项目组买了几百万的软件和服务就开始开发了,说实话,WPS真的是一个很好的SOA解决方案,但我个人认为绝对不适合中国政府、国企的流程开发,因为他无法很好的解决人工节点的问题,哪怕是引入了human task,于是我们又自己封装了一层小的流程引擎,当然我所要说的重点不是这个,而是我们在wps中所需要的JCA方式绑定的组件的实现方式:EJB+Spring+Hibernate,做好的EJB包可以以EJB Bind的Java component形式打入wps的assembly里,在bpel process中reference进来就可以了。下面我们主要说说EJB的实现。 由于wps有个特点就是在流程实例结束后删除其自带数据库中的所有实例数据,所以我们必须在流程的最后一部将数据记录在我们自己的业务库中来,我们开发的EJB就实现了这个功能。首先是业务逻辑,业务逻辑分成三个包,ejb、face、pojo,其中ejb是组件的本地接口,face是组件的功能性接口,pojo是具体实现类。 具体逻辑代码不贴了,贴一个我写的例子: face中的功能接口:
Powered by: BlogJava Copyright © 江上一叶舟