在UDDI注册中心使用BPEL4WS

UDDI 用来发布和发现一个 Web 服务。关于如何发布和发现 Web 服务,尤其是使用 WSDL[WSDL1.1] ,已经应用于很多最佳实践 (Best Practice) 中了。
WSDL 描述了 Web 服务的静态接口,包括定义每个接口中的操作。这对参与无状态消息交换的 Web 服务来说已经足够了。但是,对参与较长会话的 Web 服务,需要使用消息交换间的逻辑上或时间上的依赖关系 (dependency) 对服务的行为进行描述。
BPEL4WS 抽象流程对抽象的 WSDL 接口作了补充,它描述 Web 服务的行为并为业务伙伴 (business partners) 的集成提供必要的数据。抽象流程定义了业务伙伴调用 Web 服务操作的顺序。因此,它对业务伙伴间的抽象流程交换也有一定的作用。软件公司和标准团体使用 UDDI 注册中心发布不同类型的服务,商业用户使用其支持的服务描述完成注册。 BPEL4WS WSDL 用来描述服务类型、所支持的协议类型以及其他部署细节等。
尽管可以在一个 UDDI 注册中心发布 BPEL4WS 流程定义,但是至今为止还没有一个指导方案来说明具体应该如何做。由于缺少一个通用方法,用户在寻找 BPEL4WS 流程定义(或实现了该流程定义一部分的 Web 服务)时将受到一定的限制。
本文为在 UDDI 注册中心发布 BPEL4WS 抽象流程提供指导方案。把 BPEL4WS 描述信息映射到 UDDI 模型的目的是:
1. 实现 BPEL4WS 流程定义在 UDDI 的自动注册
2. 实现基于特定 BPEL4WS 描述信息和原数据的优化、灵活的 UDDI 查询
3. UDDI 注册中心使用 WSDL( 第二版 )” 中定义的映射进行整合。
本文提供了以下几种类型的查询:
ž 给定一个 BPEL 流程 (bpws:process) 的命名空间 (namespace) 或本地名 (local name) ,查找表示该流程的 tModel
ž 给定一个表示 WSDL 端口类型 (wsdl:portType) tModel ,查找所有表示基于该 WSDL 端口类型的 BPEL 流程的 tModel
ž 给定一个表示 BPEL 流程的 tModel ,查找所有表示该 BPEL 流程使用的 WSDL 端口类型的 tModel
ž 给定一个表示 WSDL 端口类型 (wsdl:portType) tModel ,查找所有实现了 BPEL 流程的 WSDL 端口类型的绑定模板 (binding Templates)
本文不涉及在 UDDI 注册中心发布和发现多方流程 (multi-party processes) (包括仅有两个参与者的流程)。 BPEL4WS 抽象流程可用来描述多方流程中的一个参与者的行为。描述多个 Web 服务在某个场景交互的方法需要引入一个基于 BPEL4WS 抽象流程的独立的模型。我们假设本文给出的方法可通过扩展从而实现在 UDDI 注册中心对多方流程进行存储和检索。
1.2 WSDL技术文档的依赖关系
由于 BPEL4WS 抽象流程使用 WSDL 文档实现,首先需要一个通用方法把 WSDL 描述信息映射到 UDDI 模型。特别地, WSDL 端口类型需要在 UDDI 中逐一注册和标识。因此,本文建立在文档 UDDI 注册中心使用 WSDL( 第二版 )” 的基础上。
文档中关键字 must, must not, required, shall,s hall not, should, should not, recommended, may, optional 按照 [RFC2119] 中定义的方式进行翻译。
本节简要描述了 BPEL4WS 和本文档相关的一些特性以及 BPEL4WS UDDI 映射的一些概念。
2.1.1 BPEL4WS数据模型
BPEL4WS 模型支持参与较长会话的 Web 服务可见行为 (observable behavior) 的定义。具体来说,该模型定义了抽象流程,用于描述 Web 服务的可见行为。本文讨论的就是这种抽象流程。 BPEL4WS 在描述 Web 服务的行为时引入了一些新特点,如流程 (process) ,动作 (action) ,关联 (correlation) ,角色 (role) ,伙伴地址 (partner link) 等等。图 1 展示了这些特点及其之间的相互关系。一个动作 (action) 就是处理 Web 服务之间交互的一个 BPEL4WS 活动 (activity) ,交互可以是调用一个 Web 服务的操作 (operation) 或等待接收一个消息。流程定义了 Web 服务交互以及其他 BPEL4WS 基本活动 (primitive activities) 的顺序。
一个 Web 服务在某个会话中可能扮演多重角色。通常 Web 服务对不同的伙伴扮演不同的角色。抽象流程定义 Web 服务提供者实现的角色及它的伙伴所要实现的角色,完成一个与抽象流程中的描述相一致的会话。
BPEL4WS 伙伴连接类型定义了各个角色之间的关系。它至多定义两个可能通信的角色。
BPEL4WS 模型建立在 WSDL 的抽象部分上,包括端口类型、消息类型和数据类型的定义。因此,一个 BPEL4WS 抽象流程定义是可重用的,也就是说,不同的服务可以实现同一个 BPEL4WS 抽象流程。 BPEL4WS 定义依赖于 WSDL 操作。伙伴连接类型中定义的每个角色指定其实现的那个 WSDL 端口类型。
一个 BPEL4WS 文档可包含多个抽象流程定义,每个抽象流程定义使用目标命名空间 (target namespace) 与其本地名 (local name) 来进行唯一标识。
在UDDI注册中心使用BPEL4WS_第1张图片
1 BPEL 模型及与WSDL 的关系
2.1.2 BPEL4WS到UDDI的映射
BPEL4WS 抽象流程作为独立的 UDDI tModel 而发布,以 BPEL4WS 流程名来命名。使用一个分类系统 (category system) 按照 BPEL4WS 流程定义对它们进行分类。 overviewDoc 引用一个包含流程定义的外部 BPEL4WS 文档。
BPEL4WS 流程定义中使用的所有 WSDL 端口类型都作为 portType tModel 而发布。
process tModel 使用 WSDL portType Reference tModel 引用所有的 WSDL portType tModel 。注意, BPEL4WS 流程在 WSDL portType 的基础上定义一个会话。因此, process tModel portType tModel 之间的关系由 process tModel 发布者而不是 portType tModel 发布者来发布,两者可能不是同一个人。
BPEL4WS 流程中使用的那些 WSDL portType 的实现作为一个 UDDI 绑定模板 (UDDI binding Template) 和对相应的 WSDL portType tModel (表示 BPEL4WS 流程的 process tModel )的引用而发布。注意,一个部署好的 Web 服务的行为符合其对应的 BPEL4WS 流程描述。因此,绑定模板和 process tModel 之间的关系由绑定模板发布者而不是 process tModel 发布者来发布,两者可能不是同一个人。
2 展示了这种映射方法。
在UDDI注册中心使用BPEL4WS_第2张图片
2 BPEL UDDI 的映射
3 tModel定义
3.1 BPEL实体类型tModel
该映射使用多个 UDDI 实体表示一个 BPEL4WS 文档中的各种实体。需要一种机制指出每个 UDDI 实体描述的是哪一种 BPEL4WS 实体。 BPEL 实体类型 tModel(BPEL Entity Type tModel) 提供了一个分类系统 (typing system) ,指明一个 UDDI 实体代表某种特定的 BPEL4WS 实体类型。
Name :    uddi.org:bpel:types
Description : BPEL Type Category System
V3 format key : uddi:uddi.org:bpel:types
V1,V2 format key : uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f
Categorization : categorization
Checked : yes
3.1.2.1 V2 tModel结构
<tModel tModelKey="uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f">
<name>uddi.org:bpel:types</name>
<overviewDoc>
<overviewURL>
TBD, should point to this section when the document is published as a Technical Note by the UDDI TC
</overviewURL>
</overviewDoc>
<categoryBag>
<keyedReference
keyName="uddi-org:categorization:types"
keyValue="categorization"
tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4"/>
<keyedReference
keyName="uddi-org:categorization:types"
keyValue="unchecked"
tModelKey="uuid:c1acf26d-9672-4404-9d70-39b756e62ab4"/>
</categoryBag>
</tModel>
3.1.2.2 有效值
分类系统仅可以使用一个有效值。
有效值
描述
UDDI 实体
流程
一个UDDI 实体表示的bpel:process
tModel
3.1.2.3 例子
表示一个流程的 V2 tModel 使用一个 categoryBag 表示其类型:
<categoryBag>
<keyedReference
tModelKey="uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f"
keyName="BPEL Entity type"
keyValue="process"/>
¼
</categoryBag>
本节包含表示一个 BPEL4WS 抽象流程的 tModel 。此处我们使用一个旅行社 (Travel Agent) 的例子。本例给出一个订票系统 (Ticket Reservation System) 中的一个旅行社服务 (Travel Agent service) 发布的几个基本行为。图 3 展示了整体流程:旅行社按照一种非常简单的编排方式同一个客户(旅行者)进行交互:一个客户在旅行社订票,并在之后可以选择取消订票或者确认订票。
在UDDI注册中心使用BPEL4WS_第3张图片
3 订票场景
4.1 BPEL4WS流程和WSDL端口类型
下面的代码示例展示了旅行社服务 (Travel Agent service) 的抽象 WSDL 接口,客户服务 (Customer service) 的抽象 WSDL 接口,以及两个服务(或对应角色)之间的关系。
<?xml version="1.0" ?>
<definitions name="TravelAgent"
targetNamespace="http://example.com/travelagent/wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
<!- data type definitions and message definitions are omitted-->
<!-- port type definitions -->
<portType name="InterfaceOfTravelAgent">
<operation name="OrderTrip">
<input message="orderRequest"/>
<output message="orderAcknowledgement"/>
</operation>
<operation name="CancelReservation">
<input message="cancellationRequest"/>
</operation>
<operation name="PerformBooking">
<input message="bookingRequest"/>
<output message="bookingConfirmation"/>
</operation>
</portType>
<portType name="InterfaceOfCustomer">
<operation name="NotificationOfCancellation">
<input message="cancellationResponse"/>
</operation>
<operation name="NotificationOfTimeout">
<input message="timeoutMsg"/>
</operation>
<operation name="ReceiveStatement">
<input message="statement"/>
</operation>
</portType>
<!partner link type definitions -->
<plnk:partnerLinkType name="TravelAgentService">
<plnk:role name="TravelAgent">
<plnk:portType name="InterfaceOfTravelAgent"/>
</plnk:role>
<plnk:role name="Customer">
<plnk:portTYpe name="InterfaceOfCustomer"/>
</plnk:role>
</plnk:partnerLinkType>
<!definition of properties -->
<bpws:property name="reservationID" type="xsd:string"/>
<!- property aliases are omitted-->
</definitions>
下面的代码示例展示了旅行社服务的 BPEL4WS 抽象流程。
<process name="ReservationAndBookingTickets"
targetNamespace="http://example.com/travelagent"
xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:taw="http://example.com/travelagent/wsdl"
abstractProcess="yes">
<partnerLinks>
<partnerLink name="TravelAgency"
partnerLinkType="taw:TravelAgencyService"
partnerRole="Customer"
myRole="TravelAgent"/>
</partnerLinks>
<correlationSets>
<correlationSet name="reservationCorrelation"
properties="taw:reservationID"/>
</correlationSets>
<sequence>
<receive partnerLink="TravelAgency"
portType="taw:InterfaceOfTravelAgent"
operation="OrderTrip"
createInstance="yes">
<correlations>
<correlation set="reservationCorrelation"
initiate="yes"/>
</correlations>
</receive>
<pick>
<onAlarm duration="P0Y0M1D">
<invoke partnerLink="TravelAgency"
portType="taw:InterfaceOfCustomer"
operation="NotificationOfTimeout">
<correlations>
<correlation set="reservationCorrelation"
pattern="out"/>
</correlations>
</invoke>
</onAlarm>
<onMessage partnerLink="TravelAgency"
portType="taw:InterfaceOfTravelAgent"
operation="CancelReservation">
<correlations>
<correlation set="reservationCorrelation"/>
</correlations>
<invoke partnerLink="TravelAgency"
portType="taw:InterfaceOfCustomer"
operation="NotificationOfCancellation">
<correlations>
<correlation set="reservationCorrelation"
pattern="out"/>
</correlations>
</invoke>
</onMessage>
<onMessage partnerLink="TravelAgency"
portType="taw:InterfaceOfTravelAgent"
operation="PerformBooking">
<correlations>
<correlation set="reservationCorrelation"/>
</correlations>
<invoke partnerLink="TravelAgency"
portType="taw:InterfaceOfCustomer"
operation="ReceiveStatement">
<correlations>
<correlation set="reservationCorrelation"
pattern="out"/>
</correlations>
</invoke>
</onMessage>
</pick>
</sequence>
</process>
旅行社服务提供者在一个 UDDI 注册中心发布此 BPEL4WS 抽象流程及抽象 WSDL 接口。通过这种方式,任何客户都可通过该服务描述了解旅行社发布的服务。
4.2 UDDI V2注册
下面的代码示例展示了抽象 WSDL 接口和 BPEL4WS 抽象流程在 UDDI 的注册。
4.2.1 WSDL端口类型
根据 UDDI 注册中心中使用 WSDL” 文档, BPEL4WS 流程定义中使用的 WSDL portType 作为独立的 tModel 发布,如下所示:
<tModel tModelKey="uuid:a1..." >
<name>InterfaceOfTravelAgent</name>
<overviewDoc>
<overviewURL>http://location/travelagent.wsdl<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent/wsdl" />
<keyedReference
tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457"
keyName="uddi-org:wsdl:types"
keyValue="portType" />
</categoryBag>
</tModel>
<tModel tModelKey="uuid:a2..." >
<name>InterfaceOfCustomer</name>
<overviewDoc>
<overviewURL>http://location/customer.wsdl<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent/wsdl" />
<keyedReference
tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457"
keyName="uddi-org:wsdl:types"
keyValue="portType" />
</categoryBag>
</tModel>
<tModel tModelKey="uuid:b1..." >
<name>ReservationAndBookingTickets</name>
<overviewDoc>
<overviewURL>http://location/reservation.bpel<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent" />
<keyedReference
tModelKey="uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f"
keyName="uddi-org:bpel:types"
keyValue="process" />
<keyedReference
tModelKey="uuid:082b0851-25d8-303c-b332-f24a6d53e38e"
keyName="uddi-org:wsdl:portTypeReference"
keyValue="uuid:a1..." />
<keyedReference
tModelKey="uuid:082b0851-25d8-303c-b332-f24a6d53e38e"
keyName="uddi-org:wsdl:portTypeReference"
keyValue="uuid:a2..." />
</categoryBag>
</tModel>
4.2.3 WSDL端口
<businessService
serviceKey="d1..."
businessKey="e1...">
¼
<bindingTemplates>
<bindingTemplate
bindingKey="c1..."
serviceKey="d1...">
<accessPoint URLType="http">
http://location/sample
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo
tModelKey="...">
<description xml:lang="en">
The wsdl:binding that this wsdl:port implements.
The instanceParms specifies the port local name.
</description>
<instanceDetails>
<instanceParms>TravelAgentPort</instanceParms>
</instanceDetails>
</tModelInstanceInfo>
<tModelInstanceInfo
tModelKey="uuid:a1...">
<description xml:lang="en">
The wsdl:portType that this wsdl:port implements.
</description>
</tModelInstanceInfo>
<tModelInstanceInfo
tModelKey="uuid:b1...">
<description xml:lang="en">
The bpel:process this wsdl:port supports.
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
4.3 V2查询示例
查找命名空间
http://example.com/travelagent 中的 ReservationAndBookingTickets process tModel
<find_tModel generic="2.0" xmlns="urn:uddi-org:api_v2">
<name>ReservationAndBookingTickets</name>
<categoryBag>
<keyedReference
tModelKey="uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f"
keyValue="process"/>
<keyedReference
tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824"
keyValue="http://example.com/travelagent"/>
</categoryBag>
</find_tModel>
返回 tModelKey”uuid:b1…”
4.3.2 根据portType查找流程
查找使用 InterfaceOfTravelAgent portType 的所有流程。
<find_tModel generic="2.0" xmlns="urn:uddi-org:api_v2">
<categoryBag>
<keyedReference
tModelKey="uuid:e8d75f6c-3f24-3b8d-97fd-f168e424056f"
keyValue="process"/>
<keyedReference
tModelKey="uuid:082b0851-25d8-303c-b332-f24a6d53e38e"
keyValue="a1..."/>
</categoryBag>
</find_tModel>
返回 tModelKey”uuid:b1…”
查找 ReservationAndBookingTickets 流程中使用的所有 portType
<get_tModelDetail generic="2.0" xmlns="urn:uddi-org:api_v2">
<tModelKey>uuid:b1...</tModelKey>
</get_tModelDetail>
返回 key ”uuid:b1…” process tModel tModel 注册信息。流程中使用的 portType tModelKey 可通过 process tModel categoryBag 获得。一旦检索到该 tModelKey ,再次调用 categoryBag 获取 key ”uuid:a1…”(InterfaceOfTravelAgent) key ”uuid:a2…”(InterfaceOfCustomer) portType tModel 注册信息。
<get_tModelDetail generic="2.0" xmlns="urn:uddi-org:api_v2">
<tModelKey>uuid:a1...</tModelKey>
<tModelKey>uuid:a2...</tModelKey>
</get_tModelDetail>
查找 ReservationAndBookingTickets 流程的所有实现。
由于在 UDDI V2 API 中,调用 find_binding 要求 serviceKey 属性,故无法通过一个单独的调用来查找一个流程的所有实现。首先必须调用 find_service 以获取包含了指定流程 bindingTemplate 的所有服务的 key ,然后或者通过调用一个 get_serviceDetail 检索该服务的详细信息并在多个 bindingTemplate 中寻找合适的那个 bindingTemplate ,或者通过设置 serviceKey 属性对每个服务调用 find_binding 。下面的例子展示了 find_binding 的用法。
调用 find_service 获得拥有 bindingTemplate 的所有流程列表。
<find_service generic="2.0" xmlns="urn:uddi-org:api_v2">
<tModelBag>
<tModelKey>uuid:b1...</tModelKey>
</tModelBag>
</find_service>
返回 serviceKey ”d1…”
调用 find_binding 查找某个特定服务的绑定。
<find_binding serviceKey="d1..." generic="2.0" xmlns="urn:uddi-org:api_v2">
<tModelBag>
<tModelKey>uuid:b1...</tModelKey>
</tModelBag>
</find_binding>
返回 bindingKey ”c1…”
4.4 UDDI V3注册
以下例子展示了 UDDI V3 注册过程,其中 key 使用 uri 。下面几小节展示了注册示例以及使用 UDDI V3 进行查询。
4.4.1 WSDL端口类型
UDDI V3 中, WSDL portType tModel 使用 TravelAgent.com domain keyGenerator 生成的 domain key 发布, TravelAgent 已在 UDDI 中注册。 keyGenerator 作为发布 UDDI 中某个服务的 许可 ,该服务的 key 从相应的 domain key 处获得:
<tModel tModelKey="uddi:TravelAgent.com:TravelAgentInterface_portType">
<name>InterfaceOfTravelAgent</name>
<overviewDoc>
<overviewURL>http://location/travelagent.wsdl<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uddi:uddi.org:xml:namespace"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent/wsdl" />
<keyedReference
tModelKey="uddi:uddi.org:wsdl:types"
keyName="uddi-org:wsdl:types"
keyValue="portType" />
</categoryBag>
</tModel>
<tModel tModelKey="uddi:TravelAgent.com:CustomerInterface_portType">
<name>InterfaceOfCustomer</name>
<overviewDoc>
<overviewURL>http://location/customer.wsdl<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uddi:uddi.org:xml:namespace"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent/wsdl" />
<keyedReference
tModelKey="uddi:uddi.org:wsdl:types"
keyName="uddi-org:wsdl:types"
keyValue="portType" />
</categoryBag>
</tModel>
<tModel tModelKey="uddi:TravelAgent.com:ReservationAndBookingTicketsProcess">
<name>ReservationAndBookingTickets</name>
<overviewDoc>
<overviewURL>http://location/reservation.bpel<overviewURL>
<overviewDoc>
<categoryBag>
<keyedReference
tModelKey="uddi:uddi.org:xml:namespace"
keyName="uddi-org:xml:namespace"
keyValue="http://example.com/travelagent" />
<keyedReference
tModelKey="uddi:uddi.org:bpel:types"
keyName="uddi-org:bpel:types"
keyValue="process" />
<keyedReference
tModelKey="uddi:uddi.org:wsdl:porttypereference"
keyName="uddi-org:wsdl:portTypeReference"
keyValue="uddi:TravelAgent.com:TravelAgentInterface_portType" />
<keyedReference
tModelKey="uddi:uddi.org:wsdl:porttypereference"
keyName="uddi-org:wsdl:portTypeReference"
keyValue="UDDI:TravelAgent.com:CustomerInterface" />
</categoryBag>
</tModel>
4.4.3 WSDL端口
<businessService
serviceKey="uddi:TravelAgent.com:service1"
businessKey="uddi:TravelAgent.com:StoreFront">
¼
<bindingTemplates>
<bindingTemplate
bindingKey="uddi:TravelAgent.com:TravelAgentPort"
serviceKey="uddi:TravelAgent.com:service1">
<accessPoint useType="endPoint">
http://location/sample
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo
tModelKey="uddi:...">
<description xml:lang="en">
The wsdl:binding that this wsdl:port implements.
The instanceParms specifies the port local name.
</description>
<instanceDetails>
<instanceParms>TravelAgentPort</instanceParms>
</instanceDetails>
</tModelInstanceInfo>
<tModelInstanceInfo
tModelKey="uddi:TravelAgent.com:TravelAgentInterface_portType">
<description xml:lang="en">
The wsdl:portType that this wsdl:port implements.
</description>
</tModelInstanceInfo>
<tModelInstanceInfo
tModelKey=
"uddi:TravelAgent.com:ReservationAndBookingTicket
sProcess">
<description xml:lang="en">
The bpel:process this wsdl:port supports.
</description>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
</bindingTemplates>
</businessService>
4.5 V3查询示例
查找 ReservationAndBookingTickets 业务流程的 process tModel ,其命名空间为 http://example.com/travelagent
<find_tModel xmlns="urn:uddi-org:api_v3">
<name>ReservationAndBookingTickets</name>
<categoryBag>
<keyedReference
tModelKey="uddi:uddi.org:bpel:types"
keyValue="process"/>
<keyedReference
tModelKey="uddi:uddi.org:xml:namespace"
keyValue="http://example.com/travelagent"/>
</categoryBag>
</find_tModel>
返回 tModelKey
“uddi:TravelAgent.com:ReservationAndBookingTicketsProcess”
4.5.2 根据portType查找流程
查找使用 InterfaceOfTravelAgent portType 的所有流程。
<find_tModel xmlns="urn:uddi-org:api_v3">
<categoryBag>
<keyedReference
tModelKey="uddi:uddi.org:bpel:types"
keyValue="process"/>
<keyedReference
tModelKey="uddi:uddi.org:wsdl:porttypereference"
keyValue="uddi:TravelAgent.com:TravelAgentInterface_portType"/>
</categoryBag>
</find_tModel>
返回 tModelKey
“uddi:TravelAgent.com:ReservationAndBookingTicketsProcess”
查找在 ReservationAndBookingTickets 流程中使用的所有 portType
<get_tModelDetail xmlns="urn:uddi-org:api_v3">
<tModelKey>uddi:TravelAgent.com:ReservationAndBookingTicketsProcess
</tModelKey>
</get_tModelDetail>
返回 process tModel tModel 注册,其 key
”uddi:TravelAgent.com:ReservationAndBookingTicketsProcess” 。流程中使用的 portType tModelkey 可以从 process tModel categoryBag 处获得。一旦检索到该 tModelKey ,再次调用 categoryBag 获取 key
”uddi:TravelAgent.com:TravelAgentInterface_portType”(InterfaceOfTravelAgent) key
”uddi:TravelAgent.com:CustomerInterface_portType”(InterfaceOfCustomer) portType tModel 注册信息。
<get_tModelDetail xmlns="urn:uddi-org:api_v3">
<tModelKey>uddi:TravelAgent.com:TravelAgentInterface_portType</tModelKey>
<tModelKey>uddi:TravelAgent.com:CustomerInterface_portType</tModelKey>
</get_tModelDetail>
查找 ReservationAndBookingTickets 流程的所有实现。
<find_binding xmlns="urn:uddi-org:api_v3">
<tModelBag>
<tModelKey>uddi:TravelAgent.com:ReservationAndBookingTicketsProcess
</tModelKey>
</tModelBag>
</find_binding>
返回 bindingKey ”uddi:TravleAgent.com:TravleAgentPort”
[BPEL4WS] T. Andrews, F. Curbera, H. Dholakia, Y. Goland, J. Klein, F. Leymann, K.
Liu, D. Roller, D. Smith, S. Thatte, I. Trickovic, S. Weerawarana,
Business Process Execution Language for Web Services Version 1.1 ,
http://ifr.sap.com/bpel4ws , May 2003.
[RFC2119] S. Bradner, Key words for use in RFCs to Indicate Requirement Levels,
http://www.ietf.org/rfc/rfc2119.txt , IETF RFC 2119, March 1997.
[WSDL11] E. Christensen, F. Curbera, G. Meredith, S. Weerawarana, Web
Services Description Language (WSDL) 1.1 ,
http://www.w3.org/TR/2001/NOTE-wsdl-20010315 , W3C Note, March
2001.
[WSDLBP] J. Colgrave, K. Januszewski, Using WSDL in a UDDI Registry, Version
1.08 , http://www.oasis-open.org/committees/uddi-spec/doc/bp/uddi-spectc-
bp-using-wsdl-v108-20021110.htm , OASIS UDDI TC Best Practice,
November 2002.
[WSDLTN] J. Colgrave, K. Januszewski, Using WSDL in a UDDI Registry, Version
2.0 , http://www.oasis-open.org/committees/uddi-spec/doc/tn/uddi-spectc-
tn-wsdl-v2.htm , OASIS UDDI TC Technical Note, June 2003.

你可能感兴趣的:(EL)