本文介绍了如何把Oracle的一个BPEL实例改写后部署到ActiveBpel上,并运行该实例。欢迎大家对其中的错误给予指正~
该实例的业务逻辑详见http://searchwebservices.techtarget.com.cn/tips/4/2551504.shtml,此教程详细描述了实例所涉及到的3个wsdl文件以及4个bpel文件,并介绍如何部署到Oracle的BPEL服务器。实例的运行需要用到Oracle BPEL Process Manager ,它提供了一个 BPEL 控制台,通过它可以在 BPEL 服务器域中执行、监视、管理和调试 BPEL 流程。
实例简介:
定义雇员出差安排的简化业务流程:客户端调用此业务流程,指定雇员姓名、目的地、出发日期以及返回日期。此 BPEL 业务流程首先检查雇员出差状态。假设存在一个可用于进行此类检查的 Web 服务。然后,此 BPEL 流程将检查以下两家航空公司的机票价格:美国航空公司和达美航空公司。再次假设这两家航空公司均提供了可用于进行此类检查的 Web 服务。最后,此 BPEL 流程将选择较低的价格并将出差计划返回给客户端。
Oracle版的实例源码可以下到,为了使它可以运行到ActiveBpel之下,首先要改变其文件目录结构。
在ActiveBPEL Designer(V3.0)下新建一个工程,命名为AirLine
新建四个文件夹,分别命名为bpel,META-INF,pdd,wsdl.
在bpel文件夹下新建5个BPEL流程文件,这5个中,client.bpel是Oracle的实例中原来没有的,其他4个原先都有。现把它们的代码粘贴如下:
美国航空公司AmericanAirline.bpel
达美航空公司DeltaAirline.bpel
雇员状态Employee.bpel
主流程Travel.bpel
调用主流程的客户端Client.bpel
Client.bpel,该流程用于调用Travel.bpel流程,接收Travel.bpel的回调,并将结果返回。
在这个流程的<partnerLines>的部分定义了两个partnerLink,一个是用于接收客户端调用的”client”,这是一个同步调用,因此只指定一个角色,另一个是用于调用Travel.bpel流程和接收回调的”travel”,这个调用是异步的,因此指定两个角色。
4个WSDL文件,分别描述了四种服务,其中,AmericanAirline和DeltaAirline用的是同一个WSDL文件,统称航空公司Airline。
航空公司Airline.wsdl
雇员出差状态服务 Employee.wsdl
查询航班服务Travel.wsdl
客户端服务Client.wsdl
流程配置文件catalog.xml,放在META-INF文件夹下。