一、 环境配置 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文件的Server的soap:address需要手动修改,默认生成的地址是: <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小时内删除。
发表评论