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)
来进行唯一标识。
图
1 BPEL
模型及与
WSDL
的关系
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
展示了这种映射方法。
图
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
展示了整体流程:旅行社按照一种非常简单的编排方式同一个客户(旅行者)进行交互:一个客户在旅行社订票,并在之后可以选择取消订票或者确认订票。
图
3
订票场景
下面的代码示例展示了旅行社服务
(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
接口。通过这种方式,任何客户都可通过该服务描述了解旅行社发布的服务。
下面的代码示例展示了抽象
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>
|
<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…”
。
以下例子展示了
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>
|
<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.