一、 环境配置
1.1 预置环境
Eclipse IDE for Java EE
1.2 配置Apache ODE(BPEL 解析器)
1) 下载地址 :/getting-ode.html,选择1.3.5release版本
2) 解压文件,将ode.war拷贝到tomcat的webapps目录下
3) 启动tomcat,输入localhost:8080/ode可以看到ODE的启动界面,如下所示
至此,ODE  安装成功。
1.3 安装BPEL Designer插件
1) 启动Eclipse,选择Help -> Install New Software,进入Install wizard,如下所示
2) 选择Add按钮,并输入如下地址:
/bpel/site/,点击OK
3) 根据下图所示,安装BPEL Visual Designer
4) 安装成功后,在Eclipse中选择File->New-> Other,可以查看到BPEL选项,如下图所示:
    至此,BPEL开发环境配置完成。
二、 加减法Web Services的开发部署。
2.1 新建Web工程
启动Eclipse,选择File->New->Other->Web->Dynamic Web Project,新建一个web工程。命名为webServiceProj,如下图所示:
2.2 新建加减法AddService以及SubService
建立AddService以及SubService两个class,分别是加减法的实现流程,如下图所示:
    代码
public class AddService {
    public double add(double a, double b){
        System.out.println(a + "+" + b + " = "+(a+b));
        return a+b;
    }
}
public class SubService {
    public double sub(double a, double b){
        System.out.println(a + "-" + b + " = "+(a-b));
        return a-b;
    }
}
2.3 生成加减法的Web Service WSDL
1) 生成加减法的Web Service WSDL描述文件,右键选择AddService.java,选择Web Services->Create Web Service,按照如下界面选择功能点:
2) 点击Finish就会生成java类对应的wsdl文件和配置文件,并发布到tomcat中,同时会生成调用服务的客户端,选择add(double,double),对该方法进行测试,如下所示:
同样生成SubService.java的WSDL 文件。
2.4 加减法Web Services的部署
为了能够让其他服务去调用加减法服务,必须先将其部署在服务器上。首先,右键webServiceProj工程,Export->Web->WAR file,导出War包,将导出的War包放到tomcat的webapps目录下,即完成部署。
2.5 测试服务是否发布成功,在浏览器里输入localhost:8080/webServiceProj/services/AddService?wsdl,若能打开加法服务对应的wsdl就意味着服务发布成功。
三、 BPEL实例开发、部署
3.1 创建BPEL工程。
启动Eclipse,点击File->New->Other,然后选择BPEL 2.0 ->BEPL Project,在弹出的对话框中输入项目名MyBPEL。
3.2 创建BPEL流程,
右键MyBPEL,点击New->Other,选择BPEL 2.0- > New BPEL Process File,出现New BPEL Process对话框,输入流程名MyProcess,名字空间设为:www.pku.edu/bpel/sample ,选择同步流程。点击Finish完成。如下图所示:
3.3 导入加法服务和减法服务的wsdl文件
将AddService.wsdl和SubService.wsdl复制到工程目录里。
3.4 设置伙伴链接
Bpel把涉及其中的所有服务都称之为伙伴链接。Bpel对应的wsdl(MyProcess.bpel)本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。
a) 在右上角的Partner Links中,增加两个链接,分别是addPL,subPL。如下图所示:
b) 设置伙伴链接,右击addPL,选择属性打开属性视图,在属性视图中Details页面中点Browser,打开对话框。点Add WSDL把用到的两个WSDL即AddService.wsdl和SubService加进来
选上AddService接口,点Ok,弹出伙伴链接类型定义,把名字取为addPLT,点Next。要求输入Role Name,这里输入“addProvider”,点Finish完成。
同时在属性视图中把ParterRole选为addProvider。如下图所示:
   
以同样建立subPL设置。
3.5 修改MyProcessArtifacts.wsdl中的输入输出
因为其默认的输入输出不符合我们项目的要求,右键MyProcessArtifacts.wsdl文件,用open with WSDL Editor打开该文件,转到设计视图里。如下图所示:
    单击input后边对应的箭头,打开一个新的Editor对输入消息进行配置。进去后选中类型,右键,就可以增加元素,并设置元素的类型,结果如下,其中a,b分别表示需要加减的2个值,type用来区别加减法,当type=’add’,时,调用加法服务,当type=’sub’时调用减法服务。
        同理,单击output后边对应的箭头,修改类型,结果如下:
3.6 创建调用服务时需要的变量
每次invoke一个服务时都要有对应的变量,同时要进行赋值。我们这里要调用加法服务和减法服务。因此需要额外加入addRequest,addResponse,subRequest,subResponse加完后的效果如下:
3.7 配置变量
点上addRequest变量,属性视图中切换到Details页,点右上角的Browse..按钮,打开类型选择对话框。addRequest是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。
一个变量的类型可以是简单类型,也可以是复杂类型,还可以是wsdl中的Message定义。简单起见,我们这里就把addRequest的类型设为AddService服务中的addRequest Message。
同理,其他3个变量也做相应的处理。
3.8 BPEL流程设计
打开控件视图,Window->Show View->Palette,将IF控件,拖到receiveInput后面,选中刚建好的if模块,点右键,依次点Add ElseIf。基本结构如下:
同理,拖入其他控件,最终效果如下图哦所示:
a) If语句的配置
选择If,在属性视图中点开Details页,在Expression language选择Same as Process做如下配置:输入条件语句:$input.payload/tns:type='add',
如下图所示:
同样,选择Else If
b) Assign语句的设置
第一个Assign的作用是把输入变量input中的前两个参数传给addRequest变量。需要注意的是,BEPL中的变量赋值只能是一个一个的赋,不能直接把input赋给addRequest(当然这里也不匹配,即使匹配也不行),而只能把input下的参数挨个赋给addRequest。如下图所示,将input的值a赋给addRequest的值a,此时会弹出一个对话框,询问是否要初始化addRequest,选择Yes。同理,将input的值b赋给addRequest的值b。
                同理,处理其他3个Assign。
c) Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出变量。左键选择InvokeAdd(Invoke),在属性视图的Details页面中进行如下配置:
                同理,处理InvokeSub(Invoke1):
注意:
MyBPEL对应的MyBPELArtifacts.wsdl文件的Serversoapaddress需要手动修改,默认生成的地址是:
<soap:address location="localhost:8080/ MyProcess"/>
需要修改成:
<soap:address location="localhost:8080/ode/processes/MyBPEL/MyProcess"/>
                        MyBPEL是项目名称,Myprocess是上面的那个bpel文件的名字,也就是主流程的名字。
也可以通过右击上面的MyProcessPort,打开属性选项卡。
在address这一行里面修改。
3.9 BPEL流程发布
BPEL流程最终的目的也是发布成一个web-service,只不过这个web服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的WSDL发布出去。默认生成的WSDL只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。
选择File->New Other BPEL 2.0 Apache ODE Deployment Descriptor,如下所示,直接Finish即会生成一个l文件。
打开配置伙伴端口:
四、 BPEL运行与测试
4.1 创建ODE服务器
首先到当前bpel项目的文件目录,把整个项目复制到 tomcat目录下的webapps\ode\WEB-INF\processes下面,然后打开新复制过来的bpel项目目录,可以看到文件结构如下:
然后再打开bpelContent文件夹,把里面的内容复制到出来,直接放在bpel项目目录下,就像这样
4.2 测试AddService.wsdl以及SubService.wsdl
重新回到eclipse,右键AddService.wsdl,选择Web Services->Test with web service explorer,在弹出的页面中,选择AddServiceSoapBinding中的add方法,进行测试,若成功,测试结果如下所示:
    同理,测试SubService,结果如下所示:
4.3 测试怎么把项目导入到eclipseBPEL
至于测试bpel,经过我的反复验证,发现在eclipse的tomcat和ode插件是有问题的。
所以首先都把eclipse里面的服务器关掉。
在外部启动重新启动tomcat:
然后在浏览器里面打开地址:localhost:8080/ode/
可以看到有:“processes  3”的字样,这是因为我成功部署了三个bpel项目,数字的多少代表部署了多少个bpel项目。
打开processes选项卡
可以看到目前已经部署了的bpel项目:
证明已经部署发布成功了。
接下来是最终的测试。
重新打开eclipse:
再次测试里面的wsdl文件。终于都得到结果了。(再次提醒,eclipse里面的插件tomcat服务器是关闭的,tomcat服务器需要在外部打开)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。