房屋贷款BPEL实例详解

http://tech.ddvip.com   2008年01月05日    社区交流

本文详细介绍房屋贷款BPEL实例详解

  下面是BPEL需要调用的外部服务houseloanagency的WSDL文件,这个外部服务接收顾客姓名,输出顾客已有的房屋数量。通过这个WSDL,BPEL可以知道所要调用的外部服务的接口、接口操作、输入消息和输出消息、异常,这都是BPEL流程在调用外部服务时需要知道的,对于houseloanagency.wsdl,这些参数如下。

  接口:HouseLoanAgency;

  接口操作:getHouseNumber;

  输入消息为下面的树状结构:

  getHouseNumberRequest

  |――name (String)

  l 输出消息为下面的树状结构:

  getHouseNumberResponse

  |――housenumber (int)

  l 异常:unknownNAMEFault。

  此外,BPEL需要引入该WSDL,并定义该服务为合作伙伴,所以还需要在此加入合作伙伴的定义。

<plnk:partnerLinkType name="HouseLoanAgencyPL">
   <plnk:role name="HouseLoanAgencyService" portType="tns:HouseLoanAgency" />
</plnk:partnerLinkType>

  上面portType="tns:HouseLoanAgency"指该合作伙伴所对应的WSDL的接口。BPEL的一个合作伙伴,对应于WSDL的一个接口。如果WSDL有多个接口,则需要定义多个合作伙伴。

  例程2显示了houseloanagency.wsdl的内容。

  例程2 houseloanagency.wsdl

  <?xml version="1.0" encoding="UTF-8"?>
  <definitions targetNamespace="urn:sample:soa:houseloanagency"
   xmlns:tns="urn:sample:soa:houseloanagency"
   xmlns:typens="urn:sample:soa:houseloanagency:types"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
   <types>
  <xsd:schema
  targetNamespace="urn:sample:soa:houseloanagency:types"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="getHouseNumberRequest">
   <xsd:sequence>
  <xsd:element name="name" type="xsd:string" />
   </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="getHouseNumberResponse">
   <xsd:sequence>
  <xsd:element name="housenumber" type="xsd:int" />
   </xsd:sequence>
  </xsd:complexType>           
  <xsd:complexType name="unknownNAMEFault">
   <xsd:sequence>
  <xsd:element name="name" type="xsd:string" />
   </xsd:sequence>
  </xsd:complexType>
  </xsd:schema>
   </types>
   <message name="getHouseNumberRequest">
  <part name="payload" type="typens:getHouseNumberRequest" />
   </message>
   <message name="getHouseNumberResponse">
  <part name="payload" type="typens:getHouseNumberResponse" />
   </message>    
   <message name="unknownNAMEFault">
  <part name="payload" type="typens:unknownSSNFault" />
   </message>
   <portType name="HouseLoanAgency">
  <operation name="getHouseNumber">
  <input message="tns:getHouseNumberRequest" />
  <output message="tns:getHouseNumberResponse" />
  <fault name="UnknownNAME" message="tns:unknownNAMEFault"/>
  </operation>                 
   </portType>
   <plnk:partnerLinkType name="HouseLoanAgencyPL">
  <plnk:role name="HouseLoanAgencyService" portType="tns:HouseLoanAgency" />
   </plnk:partnerLinkType>  
  </definitions>

  下面是所要调用的4个Bank的服务,它们的服务接口一样,只是输出结果的首付比例和贷款比例不同,所以采用同一个WSDL文件即可,但是在BPEL中需要定义4个合作伙伴,这4个合作伙伴所指向的服务地址是不同的,Bank的WSDL内容如下。

责编:豆豆技术应用

正在加载评论...