利用BPEL进行服务组合

1. 基本概念

什么叫服务组合?我觉得这是一个最基本的问题,显然服务组合无非就是将服务进行组合,但是在这中间必须有两点需要强调:

(1)待组合的服务必须是能够运行的,可被调用的;

(2)服务组合得到的组合服务实际上是一个业务流程。

对于第一点,很多同学在创建好BPEL工程,成功部署到ODE中后,发现报了“404”的错误,其根本的原因就是被组合的服务(原子服务)根本就没有成功部署,关于原子服务的部署在此不再进行详细的介绍,比较常见的是利用axis2插件进行开发和部署。说到这里顺便说一句,所谓的wsdl文件,只是服务的一个描述,并不是服务本身,这一点一定要区别开来,有些同学认为我已经得到了wsdl文件,那我的服务肯定就没问题了,这是绝对错误的。对于第二点,有些同学在利用BPEL进行服务组合的时候会有一只错觉:我是不是在写一个新的服务?对于这个问题,我的理解是服务组合完成的是对服务的逻辑组合,组合的素材是原子服务,组合的结果是业务流程。

2. 基本过程

关于利用BPEL进行服务组合的基本过程,我觉得大致可以分为一下几步:

(1)原子服务的开发和测试

(2)组合服务的创建和配置

(3)组合服务的部署

关于原子服务的开发和测试,前面已经说过,利用axis2可以很简单的进行开发,不再详细介绍,提醒的一点是:一定要保证原子服务是可被调用的。下面主要就组合服务的常见和配置,组合服务的部署分别介绍。

3. 组合服务的创建和配置

大家能够在网上查到的最多的版本就是那篇“Eclipse_BPEL_使用详解”,那篇文章基本上把利用BPEL进行服务组合的整个过程描述清楚了,在此,我主要指出几个容易导致错误的地方:

(1)BPEL的插件安装地址:http://download.eclipse.org/releases/juno;上述那篇文章中的地址现在已不可用,所以直接输入eclipse插件的更新地址,“juno”为我的eclipse版本,用户需根据自己的eclipse版本进行修改。

(2)原子服务的获得:不建议采用Eclipse_BPEL_使用详解”中的方法进行原子服务的开发;建议采用axis2插件先开发好原子服务并测试好后再进行组合服务的开发,访问开发好的服务就能得到对应的wsdl文件。

(3)创建BPEL流程的时候需要选择“Synchronous BPEL Process”,命名空间可以随意填写。提醒一点,所有的文件都应该在bpelContent目录下,包括后面引入的wsdl文件,deploy.xml文件等。

利用BPEL进行服务组合_第1张图片

(4)配置变量的时候最好设置成对应服务中的Message类型。以addRequest为例,最好把addRequest的类型设为AddService服务中的addRequest Message。(不建议下图中第一张图的配置方式)

利用BPEL进行服务组合_第2张图片     利用BPEL进行服务组合_第3张图片

(5)其他配置请参考Eclipse_BPEL_使用详解”,一定要注意细心。

4. 组合服务的部署

关于组合服务的部署,首先需要生成一个deploy.xml文件,然后在里面指定相应的Parter Link的接口。需要说明的主要有两点:

(1)创建ODE服务器。在创建ODE服务器的时候,并不需要完全按照Eclipse_BPEL_使用详解”给出的方法进行服务器的配置,我的做法是这样的:将bpelContentx下的所有文件拷出,以下图中的工程为例,创建一个MyProcess目录,将文件放在该目录中。

利用BPEL进行服务组合_第4张图片

(2)修改MyProcessArtifacts.wsdl中的配置。这一步也是最常出错的地方,按照上面的说明进行部署后,需要在MyProcessArtifacts.wsdl文件的最后进行修改。

利用BPEL进行服务组合_第5张图片

图中的location就是真正部署服务的地址,对应的tomcat下的目录为下图。

利用BPEL进行服务组合_第6张图片

修改后,重复(1)的过程,将修改过的文件拷到tomcat下,运行tomcat,就能成功运行。

5. 参考文献

Eclipse_BPEL_使用详解:http://wenku.baidu.com/link?url=3wIMg3m0HVoPHY8xmndq_QNaZYl3FledTvYWmRnqb7LGA5YhppV_5a-MhynvBnY8HMnOuXB22vHI_cUl1I6H9t75eJIUDx_u7rpaup-wwGi


你可能感兴趣的:(webservice,bpel,服务组合)