读书人

ESB之旅(渣滓liferay+mule+jbpm)

发布时间: 2012-10-11 10:16:10 作者: rapoo

ESB之旅(垃圾liferay+mule+jbpm)

? liferay是垃圾。

? liferay内部集成了mule+jbpm、作为ESB的mule充当了portal和jbpm之间的中介角色,也就是说portal要和jbpm通讯都得走mule,jbpm这辆摩托还需骡拉。

? 对于liferay+mule+jbpm的配置,在google上搜“liferay workflow portlet”、参考第一条结果网页:Using the Workflow Portlet 、文章主要说明了从源码构建三个必要的portlet、我用的liferay是5.1.2 版本,现在已经算是比较老的版本了,liferay5.1.2内置对mule1.x的支持、mule当前最新版是2.2.1、势必在后期要把简陋的1.x替换成2.2.1,所以优先从源码级别构建portlet以便于后期升级。

?

? 文章译文及我的实施步骤:

? 在liferay中联合mule-web和jbpm-web运行workflow-portlet!(开头提到saw-web,这是个portlet,它的作用是允许你选择不同的工作流引擎,它当前支持jbpm-3.1.2,我们不考虑别的就用jBPM,所以这个portlet先不管了,要不使用saw你得确保你的use.saw=false in workflow-portlet\docroot\WEB-INF\src\portlet.properties. workflow-portlet是我们需要下载安装的三个插件之一下面会提到,因为它的use.saw默认就是false、所以这里不必做任何改动、这里提一下免得看英文原文的朋友困扰。下面liferay全部简称LR。注意一共需要获取三个东东:workflow-portlet 、mule-web、jbpm-web 。另外从Liferay Portal Community Plugins 或者直接从你的liferay管理页面的update manager(我的中文版译为更新经理-_-!)->安装更多plugins 这些方式也可以直接安装mule-web和jbpm-web,但是没有workflow-portlet,为什么workflow-portlet没有这个原因不明!而且这样下载下来或直接安装war包都不便于从源码构建,也不便于修改,比如你直接安装jbpm-web、装是能装上接着就报错因为数据库设置都还没改,你还得停掉LR改配置)

? 1、获取插件源码 . 以前workflow portlet属于LR核心源码,但是从LR5.1.x版本以后它移到了插件目录。所以首先我们需要额外获取其源码,浏览svn地址:https://lportal.svn.sourceforge.net/svnroot/lportal/plugins,从这里你可以得到所有LR插件。根据你的具体情况修改build.properties文件(workflow portlet位于svn目录下的trunk/portlets下,它是个标准portlet该有的都有了,也有build.xml,没什么要改的。注意这个portlet才是具有页面的可以在LR页面中展现的portlet,而mule-web和jbpm-web都是没有页面的后台服务,mule-web和jbpm-web都在svn目录下的trunk/webs下)

? 2、修改jbpm-web. 修改jbpm-web\docroot\WEB-INF\src\hibernate.cfg.xml,把里面的数据库改成你使用的(另外在jbpm-web\docroot\WEB-INF\sql下有各种数据库使用的初始化sql脚本,我用oracle所以使用oracle.create.sql在数据库建好表)

? 3、部署jbpm-web. 在<liferay-plugins>\trunk\webs\jbpm-web下运行"ant",默认任务会编译、打war包并部署jbpm-web(在此之前我的准备工作:我使用myeclipse8、LR插件式开发,所以svn下来的三个东东放在了portlets目录下、导入源码目录、在jbpm-web\docroot\WEB-INF\sql下找到数据库初始化脚本并执行、修改jbpm-web\docroot\WEB-INF\src\hibernate.cfg.xml及portlet.properties、然后从svn目录down下来build-common-web.xml这个配置文件和build-common-portlet.xml放在一块即可实际上这俩文件一样、最后直接build自动生成了jbpm-web-5.1.2.war并部署、一次成功。当然前提是你的IDE和liferay开发环境已经正确建立)

? 4、部署mule-web. 在<liferay-plugins>\trunk\webs\mule-web下运行"ant",步骤同上部署mule-web(在此之前我的准备工作:得通知liferay启用mule、我是直接修改了liferay-portal-tomcat-5.5-5.1.2\webapps\ROOT\WEB-INF\lib下的portal-impl.jar中的portal.properties配置文件、在其中找到JBI一项、里面默认已经是使用mule了:jbi.workflow.url=http://localhost:8081/mule-web/workflow(我只是把端口改为了我用的8081。serviceMix无论中文网页还是老外的网页都说了有bug、至今未修复-_-!。直接build自动生成mule-web-5.1.2.war并部署、一次成功!)

? 注意: 今天(4月19日)刚发现的一个问题就是mule-web\docroot\WEB-INF\mule-config.xml这个文件忘了改啦! 里面的workflowInbound工作流端点的url初始是:http://localhost:8080/jbpm-web/servlet,而我的tomcat服务端口是8081!ESB之旅(渣滓liferay+mule+jbpm)

?

? 注意: 确保portal.properties配置文件中的"jbi.workflow.url"=

?

? LR官网上一大堆09年就提出的工作流问题没人管:http://issues.liferay.com/browse/LPS/component/10314,似乎虽然LR提供了workflow-portlet,但是离实用还差一大截ESB之旅(渣滓liferay+mule+jbpm) 。而且目前为止我的workflow-portlet只能看到页面无法定义流程!开始是一点击定义流程到edit_definition页面就报错、改了改把mule在空返回情况下的返回<result/>增加为返回<result><definition></definition></result>、可以看到页面了,但是一上传holiday xml文件就报错,说实话真的挺烂,LR做得这么复杂而且有价值资料又这么少就是失败,不仅是在国内,官网论坛上也是。那为什么还要用workflow-portlet呢?拷贝一段官网文档上的忽悠:The power of this portlet is that it allows users to create forms-based data entry applications that have knowledge of users, groups, and roles without writing a single line of code it only requires creation of a single XML document. 木办法,后期只能自己分析workflow-portlet+结合着jBPM的使用来尝试在LR5.1.2中构建工作流。

读书人网 >软件架构设计

热点推荐