UDDI (Universal Description, Discovery and Integration) は Web サービスを記述し,発見し,組み合わせるための仕様であり,IBM 社や Microsoft 社が中心となって構成された uddi.org によって規定された.
UDDI Version 1.0 は 1999 年から 2002 年にかけて,UDDI Programmer's API, UDDI Data Structure Reference, WSDL Service Interface Descriptions, UDDI tModel などのドキュメントに分割されて公開された.Version 2 のドキュメントも同様に 2001 年から 2002 年にかけて分割されて公開された.最新の版は Version 3 であり, 2002 年 7 月に "UDDI Version 3.0" (http://uddi.org/pubs/uddi-v3.00-published-20020719.pdf) としてまとめて公開されている.
Web サービスとは企業などによって他社やプログラムによって使用できるように提供された Web 上の特定のビジネス機能 (アプリケーション) のことである.UDDI においては Web サービスを XML (通常は WSDL (Web Service Description Language) を使用) によって記述したレコードから構成されるディレクトリを使用する.UDDI における要求・応答メッセージや Web サービス記述に使用される WSDL は SOAP (Simple Object Access Protocol) にもとづいている.
UDDI における主要なデータ構造はつぎのとおりである.
- (1) businessEntity
- サービスに関する情報を公開しようとするもの (party,たとえば企業や個人) に関する情報を含む.
- (2) businessService
- 一連の特定の技術的サービスについての記述的情報を含む.businessEntity は1 個または複数の businessService を含む.
- (3) bindingTemplate
- サービスのエントリ・ポイントや実装仕様に関する技術情報を含む.businessService は 1 個または複数の bindingTemplate を含む.
- (4) tModel
- サービスや値の集合の仕様記述を含む.bindingTemplate は tModel への参照を含む.
これらによって記述されたサービスを,発行者 API (Publisher API) によってレジストリ(ディレクトリ) に登録し,質問 API (Inquiry API) によって検索する.Version 3 においては質問 API にはつぎのような 10 種類の呼び出しが規定されている.
- (5) find binding
- 1 個または複数個の businessServices にまたがって登録されている bindingTemplate 要素を求める.
- (6) find business
- 1 個または複数個の businessEntity 要素を求める.
- (7) find relatedBusinesses
- 特定の businessEntity に関連する,bisinessEntity の登録情報を求める.
- (8) find service
-
登録された businessEntity に関する特定のサービスを求める.find service の呼び出し例を次の文献から引用する: J. Colgrave: A new approach to UDDI and WSDL, Part 2: Queries supported by the new OASIS UDDI WSDL Technical Note, http://www106.ibm.com/developerworks/webservices/library/ws-udmod2.html.
<find_service generic="2.0" xmlns="urn:uddi-org:api_v2"> <categoryBag> <keyedReference tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457" keyValue="service"/> <keyedReference tModelKey="uuid:2ec65201-9109-3919-9bec-c9dbefcaccf6" keyValue="StockQuoteService"/> <keyedReference tModelKey="uuid:d01987d1-ab2e-3013-9be2-2a66eb99d824" keyValue="http://example.com/stockquote/"/> </categoryBag> </find_tModel>
- (9) find tModel
-
1 個または複数個の tModel 情報構造を求める.find tModel の呼び出し例を J. Colgrave による前記の文献から引用する.
<find_tModel generic="2.0" xmlns="urn:uddi-org:api_v2"> <name>StockQuotePortType</name> <categoryBag> <keyedReference tModelKey="uuid:6e090afa-33e5-36eb-81b7-1ca18373f457" keyValue="portType"/> </categoryBag> </find_tModel>
- (10) get bindingDetail
- サービス要求をつくるための bindingTemplate に関する詳細な情報を求める.
- (11) get businessDetail
- 1 個または複数個の businessEntity に関する詳細な情報を求める.
- (12) get operationalInfo
- レジストリ中の 1 個または複数個のエンティティに関する操作的な情報を求める.
- (13) get serviceDetail
- 登録された businessService の集合に関する詳細な情報を求める.
- (14) get tModelDetail
- 登録された tModel の集合に関する詳細な情報を求める.
また,発行者 API にはつぎの 14 種類の呼び出しが規定されている.
- (15) add_publisherAssertions
- アサーション集合にアサーション (ビジネス間の関係に関する制約) を追加する.
- (16) delete_binding
- レジストリに登録された bindingTemplate を削除する.
- (17) delete_business
- レジストリに登録された businessEntity を削除する.
- (18) delete_publisherAssertions
- 特定のアサーションを削除する.(これによってビジネス間の関係が変化する.)
- (19) delete_service
- レジストリに登録された businessService を削除する.
- (20) delete_tModel
- レジストリに登録された tModel を隠す.その tModel が businessTemplate から参照されているときには,その関係に変化はなく,tModel は削除されない.
- (21) get_assertionStatusReport
- アサーションと状態情報を含む状態報告を得る.
- (22) get_publisherAssertions
- 個別の発行者が制御するアサーションのリストを得る.
- (23) get_registeredInfo
- ビジネスと tModel に関する簡易化されたリストを得る.
- (24) save_binding
- 新しい bindingTemplate を登録するか,または既存の bindingTemplate を改訂する.
- (25) save_business
- 新しい bindingEntity を登録するか,または既存の bindingEntity を改訂する.
- (26) save_service
- businessService に関する情報全体を登録または改訂する.
- (27) save_tModel
- tModel に関する情報を登録または改訂する.
- (28) set_publisherAssertions
- 個別の発行者に関するアサーションの全体を登録する.
Version 3 においては他にも様々な機能が規定されているが,その中にはセキュリティポリシーの形式やそれに関する API の規定が含まれている.