-------------- 本栏目由ChiChi同学特约播映 -------------
======= 同时鸣谢115网盘提供的下载空间 =======
************* 看完之后请点击页面下方的"顶" ************
一.配置BPEL开发环境
需要在Eclipse EE中安装BPEL插件
参考: http://blog.csdn.net/xiaoanian/article/details/7080015
二.BPEL工程配置
1.建立BPEL工程
2.添加BPEL文件
注意Template一定要选择Synchronous BPEL Process
Service Address是将来要部署到BPS上之后的地址(......因为这个属性是用在单独运行的时候,而咱们是在BPS中用,不知道可不可以随便填)
3.添加Application Server中的HelloService的WSDL
为了使用HelloService,我们要用到它的WSDL文件
打开HelloService的WSDL1.1(不能用WSDL2),另存为HelloService.wsdl
复制HelloService.wsdl到工程bpelContent目录下
三.添加名空间
1.在HelloService.wsdl中添加xmlns:plnk名空间,从HelloServiceProcessArtifacts.wsdl拷过来
2.在HelloServiceProcess.bpel中添加xmln:ns名空间,从HelloService.wsdl拷过来.
这个名空间其实是HelloService.wsdl中指定的targetNamespace.
拷到bpel中是为了能引用HelloService.wsdl的定义元素 (跟java的import差不多).
如果要添加更多的wsdl,这一步也不可少,并且要保证名空间前缀唯一,比如不能在不同的wsdl中
都出现xmln:ns而指向不同的名空间.
鉴于xxx,lcx,cy,gg等战斗在抗击chichi一线的劳动妇女对名空间甚为疑惑, 并且考虑到恐怖的run丰肯定也会confused,专门贴一张图
来解释一下名空间.
四.添加代码
1.在HelloService.wsdl中添加<plnk:partnerLinkType>,这就是刚才我们添加xmlns:plnk名空间的原因
下面我们转到HelloServiceProcess.bpel中
2.在<bpel:partnerLinks>中添加<bpel:partnerLink>,指向HelloService.wsdl中的partnerLinkType
注意是partnerRole而非myRole.
3.在<bpel:variables>添加中间变量,做为HelloService的输入输出
这一步就是调用App Server的HelloService服务
5.点击编辑窗口左下方的Design,我们看到如下的流程
6.再回到Source,还要添加消息类型转换模块.因为整个process输入的变量是"input"(类型是tns:HelloServiceProcessRequestMessage,在HelloServiceProcessArtifacts.wsdl中定义),而我们调用的HelloService服务的输入是"service_input"(类型是ns:greetRequest,在HelloService.wsdl中定义),因此必须要进行类型转换.类型的转换要用到<bpel:assign>.该过程相对复杂,不宜手动编写代码,需要自动生成.我们先在<bpel:invoke>前后分别添加<bpel:assign>,取名为assignInput和assignOutput,不填任何内容,现在我们看到报错,不要紧,往下看
7.点击Design,进行如下操作
编辑assignInput
编辑assignOutput
8.添加deploy.xml
右键bpelContent文件夹->new->others->BPEL2.0->Apache ODE Deployment Descriptor, next->finish
双击打开,
在client 那行的 Associated Port 列选择HelloServiceProcessPort,其他列自动完成
在helloServiceBpelLink那行的Associated Port列选择HelloServiceHttpSoap11Endpoint,其他列自动完成
保存.

好了,整个BPEL就部署好了
注意,如果你更改了bpel,wsdl文件,一定要同步更新deploy.xml, 如下:点击右上方链接Associated BPEL ........update!
五.打包并上传
1.进入工程文件夹的 beplContent 下,将5个文件打包成 zip 文件
2.进入BPS,进入main/Business Process/Add BPEL,上传文件
注意,如果已经部署过服务名相同的服务,先要进入main/Business Process/Deployed Packages,把以前的服务Undepoly掉.
3.好了,我们看到 Web Services/list 列表中多了一个HelloServiceProcess
六.手动wsdl2java
因为BPS里Generate Client报错(不信你随便选一个bepl service试试),所以我们必须手动生成java文件.
需要用到axis-1.6.1包,下载地址 http://axis.apache.org/axis2/java/core/download.cgi
如果你以前用Client的话多半已经下过了.
解压后我们进入到其bin目录下
输入如下命令:
wsdl2java.bat -uri http://192.168.10.111:9766/services/HelloServiceProcess?wsdl -o ./temp -t
uri是你的BPS的HelloServiceProcess的wsdl1.1的地址. "-o ./temp"表示将生成的代码到temp文件夹下(先建立)
生成成功之后,就可以将两个java文件复制到Client的工程中使用了
假设我们的名字叫KongBuDeRunFeng, 运行结果是这样的
八.源码下载
HelloServiceProcess BPEL工程, 可直接导入到Eclipse中. (需要BPEL插件)
http://115.com/file/e6p3ybm8#HelloServiceProcess_EclipseEE_Project.rar
HelloServiceProcesClient工程,可直接导入到Eclipse中
http://115.com/file/e6p3yo2b#HelloServiceProcessClient_EclipseEE_Project.rar
九.总结
BPS可以用来连接各种服务,并定义流程 ,操作方法大同小异.
需要注意的一点是名空间的引用.还有用<bpel:invoke>调用其他服务时比较麻烦的一点是要用<bepl:assign>进行类型转换和赋值,这一步最好让程序自动生成