BPEL 简明开发手册

2026/4/30 5:39:14

第 3 步:定义合作伙伴链接类型(partnerLinkType) ―――――――定义了由哪些PortType组成了一个交互调用过程。需要为每一个交互调用定义一个partnerLinkType

第三步是定义合作伙伴链接类型。合作伙伴链接类型表示BPEL流程与相关方(包括BPEL流程调用的Web服务以及调用BPEL流程的客户端)之间的交互。

本示例包含三个不同的合作伙伴:客户端、雇员出差状态服务和航空公司服务。理想情况下,每个Web服务都应在WSDL包装合作伙伴链接。(实际情形可能不是这样的。)然后,我们可以用WSDL包装合作伙伴Web服务(倒入Web服务的WSDL兵定义合作伙伴链接类型)。或者,我们可以在BPEL流程的WSDL中定义所有合作伙伴链接。但由于此方法违反了封装原则,因此不建议使用。

对于本示例,我们定义了三个合作伙伴链接类型(每个类型位于 Web 服务的相应 WSDL 中):

? travelLT:用于描述此 BPEL 流程客户端与此 BPEL 流程本身之间的交互。此交互是异步交互。此合作伙

伴链接类型在此 BPEL 流程的 WSDL 中定义。 ? employeeLT:用于描述此 BPEL 流程与雇员出差状态 Web 服务之间的交互。此交互是同步交互。此合作伙

伴链接类型在雇员 Web 服务的 WSDL 中定义。 ? flightLT:描述此 BPEL 流程与航空公司 Web 服务之间的交互。此交互是异步交互,且航空公司 Web 服

务对此 BPEL 流程调用一个回调。此合作伙伴链接类型在航空公司 Web 服务的 WSDL 中定义。

每个合作伙伴链接可以拥有一个或两个角色,我们必须为每个角色指定它使用的 portType。对于同步操作,由于操作只是单向调用,因此每个合作伙伴链接类型仅有一个角色。例如,此 BPEL 流程对雇员出差状态 Web 服务调用 EmployeeTravelStatus 操作。由于它是同步操作,因此此 BPEL 流程等待完成并仅在完成操作后取得响应。

对于异步回调操作,我们必须指定两个角色。第一个角色描述客户端操作调用。第二个角色描述回调操作调用。在本示例中,BPEL 流程与航空公司 Web 服务之间存在一个异步关系。

正如我们已经指出的,我们需要三个合作伙伴链接类型:两个链接类型指定两个角色(因为它们是异步的),一个链接类型指定一个角色(因为它是同步的)。

合作伙伴链接类型在特殊命名空间http://schemas.xmlsoap.org/ws/2003/05/partner-link/ 的 WSDL 定义。首先,我们在客户端使用的 BPEL 流程 WSDL 中定义 travelLT 链接类型以调用此 BPEL 流程。所需的第一个角色是出差服务(即,我们的 BPEL 流程)的角色。客户端使用 TravelApprovalPT 端口类型与此 BPEL 服务通信。第二个角色 travelServiceCustomer 描述了此 BPEL 流程将在 ClientCallbackPT 端口类型中对其执行回调的客户端的特征:

项目名称: 版本:<0.1> 文档名称:BPEL 简明开发手册 日期:<2006/11/25> 文档创建者:Sika Team 公司机密文件,请勿外漏 Page 10

第二个链接类型是 employeeLT。它用于描述此 BPEL 流程与雇员出差状态 Web 服务之间的通信,并在此雇员 Web 服务的 WSDL 中定义。此交互是同步交互,因此我们需要一个名为 employeeTravelStatusService 的角色。此 BPEL 流程使用雇员 Web 服务上的 EmployeeTravelStatusPT:

注意:因为此过程序同步的,所以只有一个角色,不同于其它两个通信过程。

最后一个合作伙伴链接类型 flightLT 用于描述此 BPEL 流程与航空公司 Web 服务之间的通信。此通信是异步通信。此 BPEL 流程对航空公司 Web 服务调用一个异步操作。此 Web 服务在完成请求后对此 BPEL 流程调用一个回调。因此,我们需要两个角色。第一个角色描述航空公司 Web 服务对于此 BPEL 流程服务的角色,即航空公司服务 (airlineService)。此 BPEL 流程使用 FlightAvailabilityPT 端口类型进行异步调用。第二个角色描述了此 BPEL 流程对于航空公司 Web 服务的角色。对于航空公司 Web 服务而言,此 BPEL 流程是一个航空公司客户,因此角色名称为 airlineCustomer。航空公司 Web 服务使用 FlightCallbackPT 端口类型进行回调。此合作伙伴链接类型在航空公司 Web 服务的 WSDL 中定义:

了解合作伙伴链接类型对于开发 BPEL 流程规范至关重要。有时,它可以帮助生成所有交互的图表。定义合作伙伴链接类型后,我们已经完成了准备阶段,并准备开始编写业务流程定义。 第 4 步:创建业务流程 ―――――――在bpel文件中定义业务流程

现在,您就可以开始编写 BPEL 流程了。通常,BPEL 流程等待客户端传入的消息,以启动业务流程的执行。在本示例中,客户端通过发送输入消息TravelRequest 启动此 BPEL 流程。然后,此 BPEL 流程通过发送 EmployeeTravelStatusRequest 消息调用雇员出差状态 Web 服务。由于此调用是同步调用,因此它等待 EmployeeTravelStatusResponse 消息。然后,此 BPEL 流程通过向上述两家航空公司 Web 服务发送

FlightTicketRequest 消息对它们进行并发异步调用。每个航空公司 Web 服务通过发送 TravelReponse 消息进行回调。然后,此 BPEL 流程选择较合适的航空公司并使用 TravelResponse 消息对客户端进行回调。我们首先编写一个空的 BPEL 流程提纲,它展示了每个 BPEL 流程定义文档的基本结构: 项目名称: 版本:<0.1> 文档名称:BPEL 简明开发手册 日期:<2006/11/25> 文档创建者:Sika Team 公司机密文件,请勿外漏 Page 11

我们首先添加所需的命名空间。此处,我们必须定义目标命名空间以及用于访问雇员和航空公司 WSDL 以及此 BPEL 流程 WSDL 的命名空间。我们还必须为所有 BPEL 活动标记声明命名空间(此处采用缺省命名空间,以便不必限定每个 BPEL 标记名)。BPEL 活动命名空间必须为

http://schemas.xmlsoap.org/ws/2003/03/business-process/:

targetNamespace=\

xmlns=\xmlns:trv=\

xmlns:emp=\xmlns:aln=\...

合作伙伴链接(partnerLink) ―――在bpel文件中定义此partnerLinks目的在于导入各个wsdl文件中的partnerLink,并且确定在交互过程忠各自的角色如何。

接下来,我们必须定义合作伙伴链接,它们定义与此 BPEL 流程交互的不同方。每个合作伙伴链接都与描述其特性的特定 partnerLinkType 相关。每个合作伙伴链接还最多指定两个属性:

? myRole:表明业务流程本身的角色。 ? partnerRole:表明合作伙伴的角色。

注意: myRole是此bpel流程所扮演的角色,而partnerRole是其合作伙伴所扮演的角色。

合作伙伴链接仅可以指定一个角色,通常同步请求/响应操作也仅能指定一个角色。对于异步操作,它指定两个角色。在本示例中,我们定义四个角色。第一个合作伙伴链接称作客户端,由 travelLT 合作伙伴链接类型描述其特性。此客户端调用该业务流程。我们需要指定 此BPEL 流程 (myRole 属性) 的角色为travelService。我们必须指定第二个角色:partnerRole。此处,该角色为 travelServiceCustomer,它项目名称: 版本:<0.1> 文档名称:BPEL 简明开发手册 日期:<2006/11/25> 文档创建者:Sika Team 公司机密文件,请勿外漏 Page 12

描述 BPEL 流程客户端的特性。

第二个合作伙伴链接称作 employeeTravelStatus,由 employeeLT 合作伙伴链接类型描述其特性。它是 BPEL 流程与 Web 服务之间的一个同步请求/响应关系;我们再次仅指定一个角色。此时,该角色为 partnerRole,这是因为我们描述了 Web 服务(它是此 BPEL 流程的合作伙伴)的角色:

最后两个合作伙伴链接对应于航空公司 Web 服务。由于它们使用同一类型的 Web 服务,因此我们基于一个合作伙伴链接类型 flightLT 指定两个合作伙伴链接。此处,由于我们使用异步回调通信,因此需要两个角色。此 BPEL 流程 (myRole) 对于航空公司 Web 服务的角色为 airlineCustomer,而航空公司 (partnerRole) 的角色为 airlineService:

变量

变量 BPEL 流程中的变量用于存储消息以及对这些消息进行重新格式化和转换。您通常需要为发送到合作伙伴以及从合作伙伴收到的每个消息定义一个变量。就我们的流程而言,我们需要七个变量。我们将它们命名为 TravelRequest、EmployeeTravelStatusRequest、EmployeeTravelStatusResponse、FlightDetails、FlightResponseAA、FlightResponseDA 和 TravelResponse。

我们必须为每个变量指定类型。可以使用 WSDL 消息类型、XML 模式简单类型或 XML 模式元素。在我们的示例中,我们对所有变量使用 WSDL 消息类型:

messageType=\

messageType=\

项目名称: 版本:<0.1> 文档名称:BPEL 简明开发手册 日期:<2006/11/25> 文档创建者:Sika Team 公司机密文件,请勿外漏 Page 13


BPEL 简明开发手册.doc 将本文的Word文档下载到电脑
搜索更多关于: BPEL 简明开发手册 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219