Uddi-data-model

提供:Dev Guides
移動先:案内検索

UDDI-データモデル

UDDIには、次のデータ構造を記述するXMLスキーマが含まれています-

  • businessEntity
  • ビジネスサービス
  • bindingTemplate
  • tModel
  • PublisherAssertion

businessEntityのデータ構造

ビジネスエンティティ構造は、Webサービスのプロバイダーを表します。 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のデータ構造

ビジネスサービス構造は、ビジネスエンティティによって提供される個々のWebサービスを表します。 その説明には、Webサービスにバインドする方法、Webサービスの種類、およびそれが属する分類カテゴリに関する情報が含まれます。

Hello World Webサービスのビジネスサービス構造の例を次に示します。

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

_businessKey_および_serviceKey_属性でUniversally Unique Identifier(UUID)が使用されていることに注意してください。 すべてのビジネスエンティティとビジネスサービスは、情報が最初に入力されたときにレジストリによって割り当てられたUUIDを介して、すべてのUDDIレジストリで一意に識別されます。

bindingTemplateのデータ構造

バインディングテンプレートは、ビジネスサービス構造によって表されるWebサービスの技術的な説明です。 1つのビジネスサービスに複数のバインディングテンプレートがある場合があります。 バインディングテンプレートは、Webサービスの実際の実装を表します。

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レジストリ内に格納されているさまざまなビジネス、サービス、およびテンプレート構造を記述する方法です。 抽象概念はすべて、tModelとしてUDDI内に登録できます。 たとえば、新しいWSDLポートタイプを定義する場合、UDDI内でそのポートタイプを表すtModelを定義できます。 次に、tModelをそのビジネスサービスのバインディングテンプレートの1つと関連付けることにより、特定のビジネスサービスがそのポートタイプを実装するように指定できます。

次に、Hello World Interfaceポートタイプを表すtModelの例を示します。

<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データ構造

これは、子会社や部門などの特定のタイプの関係に応じて、2つ以上のbusinessEntity構造を関連付ける関係構造です。

publisherAssertion構造は、fromKey(最初のbusinessKey)、toKey(2番目のbusinessKey)、およびkeyedReferenceの3つの要素で構成されています。

keyedReferenceは、tModelKeyによって一意に参照される、tModel内のkeyName keyValueペアの観点から、アサートされた関係タイプを指定します。

<element name = "publisherAssertion" type = "uddi:publisherAssertion"/>
<complexType name = "publisherAssertion">
   <sequence>
      <element ref = "uddi:fromKey"/>
      <element ref = "uddi:toKey"/>
      <element ref = "uddi:keyedReference"/>
   </sequence>
</complexType>