UDDI включает в себя XML-схему, которая описывает следующие структуры данных:
- субъект предпринимательской деятельности
- бизнес Сервис
- 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 Interface.
<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.