|
||||||||||||||||||
| 前のページ 1 2 3 | ||||||||||||||||||
| XML変換(XSLTによるデータマッピング) | ||||||||||||||||||
|
XMLによってアプリケーション間のセマンティクスの整合性を確保するためには、アプリケーション間でXMLのタグ名について合意ができている必要があります。 例えば以下のように、アプリケーションAが製品番号を「product-id」というタグ名のXMLエレメントに格納してアプリケーションBに送信するとします。
<product-id>12345</product-id>
この場合、アプリケーションBではproduct-idというタグ名が製品番号をあらわしていることを理解できなければなりません。すなわち「アプリケーションAとアプリケーションBとの間で、事前に製品番号をproduct-idというタグ名でやり取りする」という取り決めをしておかなくてはなならいのです。 これによって、はじめてアプリケーション間のセマンティクスの整合性が得られ、XMLを採用する意味がでてきます。 しかし、アプリケーション間でタグ名の合意が取れており、受け取ったデータのタグを解釈できる状況にあっても、セマンティクスにからむ問題をすべて解決できるとは限りません。それは、XMLのタグではあらわしきれないセマンティクスの違いが、アプリケーション間に存在する場合があるからです。 例えば、製品データ内に製品の重量をあらわす以下のようなエレメントが含まれてるものとします。
<weight>2.0</weight>
製品重量のエレメントに「weight」というタグ名を用いることがアプリケーション間で合意されているものとします。これで、このweightというエレメントが重量をあらわしていると解釈できるようになります。 ところが、データ値である「2.0」は、2.0kgなのか2.0gなのか、その単位がアプリケーション間で異なっている場合があります。 同様に以下のようなエレメントでも問題が発生します。
<price>2000</price>
この例では「タグ名のpriceが製品価格をあらわす」という合意がとれていても、それは円なのかドルなのか、消費税を含むのか含まないのかといった点で、アプリケーションのセマンティクスが異なっていることがあるのです。 また、よく似た例に、アプリケーションAでは顧客の年齢を「25才」というように年齢数で保持しており、一方のアプリケーションBでは生年月日で保持しているといったケースもあげられます。 このように、アプリケーションを統合する場合には、XMLのタグ名というデータスキーマのみならず、そこに格納されるデータ値のセマンティクスについてもアプリケーション間で事前に合意しておく必要があります。 しかしながら、SOAにおいてはシステムのアジャイル性が強く求められます。新たなアプリケーションとの間で事前にデータセマンティクスの標準化を行い、それに基づいてアプリケーションを変更している余裕はないのです。 この問題に対する解は、ESBなどの統合ミドルウェアにXMLの変換機能を持たせ、アプリケーションを相手側のデータセマンティクスから解放するようにすることです。 ESB製品に搭載されているXMLデータ変換機能のほとんどはXSLT(XMLスタイルシート)を応用したものです。一方のアプリケーションから出力されたXMLデータを定義されたXSLTに基づいて変換し、受け側のアプリケーションのデータセマンティクスに合うようにします。 どの製品においても、図4に例示したような変換が行えるようになっています。 すなわちXML変換機能によって以下の2つが実現でき、アプリケーション統合の柔軟性とアジャイル性を高めることを期待できます。
表2:XML変換機能で実現できる項目 なお、XSLTの定義を手動で記述するのが面倒なこともあり、ほとんどのESB製品には図5のようなツールが用意されています。 これは、いわゆる「マッピングツール」と呼ばれるもので、マウス操作で視覚的に送り側と受け側のXMLエレメントを結びつけ(マッピングし)、それぞれの結びつけに対するデータ値の変換ロジックを定義できるようになっています。 マッピングツールは、視覚的に定義された情報をXSLTに置き換えていきます。 |
||||||||||||||||||
| 次回は | ||||||||||||||||||
|
今回はアプリケーション間のデータ整合性について、XML変換による解決策を取り上げました。しかし実際にはXML変換ではカバーできない問題も発生します。 そこで次回はXML変換ではカバーできないシンタックスの違いについて、さらに深く掘り下げます。 |
||||||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||



