UDDI - модель данных
UDDI включает схему XML, которая описывает следующие структуры данных:
- businessEntity
- businessService
- bindingTemplate
- tModel
- publisherAssertion
Структура данных businessEntity
Структура бизнес-объекта представляет поставщика веб-услуг. В реестре UDDI эта структура содержит информацию о самой компании, включая контактную информацию, отраслевые категории, бизнес-идентификаторы и список предоставляемых услуг.
Вот пример записи реестра UDDI фиктивного бизнеса:
<businessEntity businessKey = "uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40"
operator = "http://www.ibm.com" authorizedName = "John Doe">
<name>Acme Company</name>
<description>
We create cool Web services
</description>
<contacts>
<contact useType = "general info">
<description>General Information</description>
<personName>John Doe</personName>
<phone>(123) 123-1234</phone>
<email>[email protected]</email>
</contact>
</contacts>
<businessServices>
...
</businessServices>
<identifierBag>
<keyedReference tModelKey = "UUID:8609C81E-EE1F-4D5A-B202-3EB13AD01823"
name = "D-U-N-S" value = "123456789" />
</identifierBag>
<categoryBag>
<keyedReference tModelKey = "UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2"
name = "NAICS" value = "111336" />
</categoryBag>
</businessEntity>
Структура данных businessService
Структура бизнес-сервиса представляет собой индивидуальный веб-сервис, предоставляемый бизнес-объектом. Его описание включает информацию о том, как выполнить привязку к веб-службе, к какому типу веб-службы она принадлежит и к каким таксономическим категориям она принадлежит.
Вот пример структуры бизнес-службы для веб-службы Hello World.
<businessService serviceKey = "uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
businessKey = "uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40">
<name>Hello World Web Service</name>
<description>A friendly Web service</description>
<bindingTemplates>
...
</bindingTemplates>
<categoryBag />
</businessService>
Обратите внимание на использование универсальных уникальных идентификаторов (UUID) в атрибутах businessKey и serviceKey . Каждый бизнес-объект и бизнес-сервис однозначно идентифицируются во всех реестрах UDDI через UUID, присвоенный реестром при первом вводе информации.
Структура данных bindingTemplate
Шаблоны привязки - это технические описания веб-сервисов, представленные структурой бизнес-сервисов. Одна бизнес-служба может иметь несколько шаблонов привязки. Шаблон привязки представляет собой фактическую реализацию веб-службы.
Вот пример шаблона привязки для Hello World.
<bindingTemplate serviceKey = "uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
bindingKey = "uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40">
<description>Hello World SOAP Binding</description>
<accessPoint URLType = "http">http://localhost:8080</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey = "uuid:EB1B645F-CF2F-491f-811A-4868705F5904">
<instanceDetails>
<overviewDoc>
<description>
references the description of the WSDL service definition
</description>
<overviewURL>
http://localhost/helloworld.wsdl
</overviewURL>
</overviewDoc>
</instanceDetails>
</tModelInstanceInfo>
</tModelInstanceDetails>
</bindingTemplate>
Поскольку бизнес-служба может иметь несколько шаблонов привязки, служба может определять разные реализации одной и той же службы, каждая из которых привязана к разному набору протоколов или другому сетевому адресу.
Структура данных tModel
tModel - последний базовый тип данных, но, возможно, самый трудный для понимания. tModel означает техническую модель.
tModel - это способ описания различных структур бизнеса, услуг и шаблонов, хранящихся в реестре UDDI. Любое абстрактное понятие может быть зарегистрировано в UDDI как tModel. Например, если вы определяете новый тип порта WSDL, вы можете определить tModel, который представляет этот тип порта в UDDI. Затем вы можете указать, что данная бизнес-служба реализует этот тип порта, связав tModel с одним из шаблонов привязки этой бизнес-службы.
Вот пример tModel, представляющего тип порта интерфейса Hello World.
<tModel tModelKey = "uuid:xyz987..." operator = "http://www.ibm.com"
authorizedName = "John Doe">
<name>HelloWorldInterface Port Type</name>
<description>
An interface for a friendly Web service
</description>
<overviewDoc>
<overviewURL>
http://localhost/helloworld.wsdl
</overviewURL>
</overviewDoc>
</tModel>
Структура данных publisherAssertion
Это структура отношений, объединяющая две или более структур businessEntity в соответствии с определенным типом отношений, например, дочерняя компания или отдел.
Структура publisherAssertion состоит из трех элементов: fromKey (первый businessKey), toKey (второй businessKey) и keyedReference.
KeyedReference обозначает тип заявленного отношения в терминах пары keyName keyValue в tModel, на которую однозначно ссылается tModelKey.
<element name = "publisherAssertion" type = "uddi:publisherAssertion" />
<complexType name = "publisherAssertion">
<sequence>
<element ref = "uddi:fromKey" />
<element ref = "uddi:toKey" />
<element ref = "uddi:keyedReference" />
</sequence>
</complexType>