UDDI - Modelo de Dados

UDDI inclui um esquema XML que descreve as seguintes estruturas de dados -

  • businessEntity
  • businessService
  • bindingTemplate
  • tModel
  • publisherAssertion

Estrutura de dados businessEntity

A estrutura da entidade comercial representa o provedor de serviços da web. No registro UDDI, essa estrutura contém informações sobre a própria empresa, incluindo informações de contato, categorias de setor, identificadores de negócios e uma lista de serviços fornecidos.

Aqui está um exemplo de entrada de registro UDDI de uma empresa fictícia -

<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>

Estrutura de dados businessService

A estrutura do serviço comercial representa um serviço web individual fornecido pela entidade comercial. Sua descrição inclui informações sobre como vincular-se ao serviço da web, que tipo de serviço da web ele é e a quais categorias taxonômicas ele pertence.

Aqui está um exemplo de uma estrutura de serviço de negócios para o serviço da web 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>

Observe o uso dos identificadores exclusivos universais (UUIDs) nos atributos businessKey e serviceKey . Cada entidade comercial e serviço comercial é identificado exclusivamente em todos os registros UDDI por meio do UUID atribuído pelo registro quando as informações são inseridas pela primeira vez.

Estrutura de dados bindingTemplate

Os modelos de ligação são as descrições técnicas dos serviços da web representados pela estrutura de serviço de negócios. Um único serviço de negócios pode ter vários modelos de ligação. O modelo de ligação representa a implementação real do serviço da web.

Aqui está um exemplo de um modelo de ligação para 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>

Como um serviço de negócios pode ter vários modelos de ligação, o serviço pode especificar diferentes implementações do mesmo serviço, cada uma ligada a um conjunto diferente de protocolos ou um endereço de rede diferente.

Estrutura de dados tModel

tModel é o último tipo de dados principal, mas potencialmente o mais difícil de entender. tModel significa modelo técnico.

tModel é uma maneira de descrever os vários negócios, serviços e estruturas de modelo armazenadas no registro UDDI. Qualquer conceito abstrato pode ser registrado no UDDI como um tModel. Por exemplo, se você definir um novo tipo de porta WSDL, poderá definir um tModel que representa esse tipo de porta dentro do UDDI. Em seguida, você pode especificar que um determinado serviço de negócios implemente esse tipo de porta associando o tModel a um dos modelos de ligação desse serviço de negócios.

Aqui está um exemplo de um tModel que representa o tipo de porta 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>

Estrutura de dados publisherAssertion

É uma estrutura de relacionamento que associa duas ou mais estruturas businessEntity de acordo com um tipo específico de relacionamento, como filial ou departamento.

A estrutura publisherAssertion consiste em três elementos: fromKey (a primeira businessKey), toKey (a segunda businessKey) e keyedReference.

O keyedReference designa o tipo de relacionamento declarado em termos de um par keyName keyValue dentro de um tModel, referenciado exclusivamente por um 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>