|
Robert Vila, Software Engineer, IBM
2007年12月19日, 原文はこちら(US)
この記事では、WebSphere Transformation Extender Design Studioを用いて初めてのDataPower用変換マップを作成するやり方について説明します。記事では、WebSphere Transformation Extenderの詳細と、DataPowerとの統合について説明し、DataPowerアプライアンス用に変換マップを設計する方法を、例を使用して説明します。
IBM® WebSphere® Transformation Extenderは、IBMの汎用変換エンジンです。WebSphere Transformation Extender Design Studioというグラフィカル環境で、容易にデータを記述してそれを複数の入力と出力間でマップすることができます。マップは一度定義すると、バッチ・モードを含むさまざまな方法で実行でき、APIは各種プログラミング言語で、Webサービス呼び出しを介して、z/OS上で、およびその他のたくさんの方法により使用することができます。また、WebSphere Transformation Extenderランタイム・エンジンは、他のさまざまな IBM製品(WebSphere Message Broker、WebSphere Enterprise Service Bus、WebSphere Process Serverなど)と緊密に統合することができます。
WebSphere DataPower SOAアプライアンスは、容易にデプロイが可能な専用の装置に一連の機能を提供します。DataPowerアプライアンスのバージョンによって、提供する機能のレベルは異なります。DataPower XML Accelerator XA35は、XML、スキーマ、XPath、およびXSLT処理を提供します。DataPower XML Security Gateway XS40は、ファイアウォール、暗号化、およびアクセス制御が追加されています。DataPower Integration Appliance XI50はさらに、メッセージのルーティングや変換を含むESB機能が追加されています。
WebSphere Transformation Extender Design Studioを使用してDataPowerアプライアンス用に変換を作成することは、プラットフォームの自然な拡張です。DataPowerアプライアンスでは、XSLTを使用する装置でのハイパフォーマンスなXML→XML変換がサポートされます。WebSphere Transformation Extenderでは、XSLTを作成する必要なく、アプライアンスでのXML→バイナリー変換またはバイナリー→XML変換がサポートされます。スタンドアロン製品の場合、変換を作成することは、Design Studioグラフィカル・ユーザー・インターフェースを使用して入出力を定義し、それらの間をマップするのと同様に単純です。この記事では、WebSphere Transformation Extender Design Studioでいくつかのマップを作成し、それらをDataPowerアプライアンス上で実行する方法を説明します。
前提条件
この記事に含まれる例を実行するには、以下の製品がインストールされている必要があります。
- WebSphere Transformation Extender Design Studio V8.1.0.2 以降
- WebSphere DataPower XI50(ファームウェア更新済み)
オペレーティング・システムおよびハードウェアの要件については、製品資料を参照してください。
WebSphere Transformation Extender Design Studioを使用して変換を作成するのは、単純なプロセスです。この製品を使用する第一の利点は、スタンドアロン版のWebSphere Transformation Extenderで変換を作成するプロセスを理解すれば、それらの変換を利用してDataPowerを対象とした変換を作成することができることです。
タイプ・ツリーの作成
変換の作成における最初のステップは、タイプ・ツリーの定義です。タイプ・ツリーとは、変換対象データのデータ・ディクショナリーであるWebSphere Transformation Extenderの成果物です。データをスキーマのように表現したものであり、これを使用するとWebSphere Transformation Extenderで入出力の検証を実行できます。
使用するデータに応じて、タイプ・ツリーの作成方法はさまざまです。WebSphere Transformation Extenderには、以下で説明するように、このプロセスを自動化する一連のインポーターがあります。こうしたインポーターには、XMLスキーマ、DTD、COBOLコピーブック、CORBA IDLファイルなどがあります。入力データを自分で定義する場合は、Type Designerグラフィカル・ツールを使用できます。このツールでは、データに含めるフィールド、その区切り方、実行する検証のタイプを指定できます。
タイプ・ツリーは入力または出力の方向には関連付けられないため、広く再利用できます。タイプ・ツリーは、予期されるデータのタイプを明確にWebSphere Transformation Extenderに知らせて、変換するすべてのものが有効になるようにします。
マップの作成
変換するタイプ・ツリーをすべて定義したら、マッピングを開始できます。WebSphere Transformation Extender Design Studioには、このプロセスを単純にする、Map Designerというグラフィカル・ツールが用意されています。まず、.mms拡張子が付いたマップ・ソース・ファイルを作成します。このファイルは、実行する可能性があるすべてのマッピングを含む物理的成果物です。次に、個別のマップを1つ作成します。マップ・ソース・ファイルには複数のマップを組み込むことができますが、この記事の目的上、マップの数を1つに制限します。
各マップには入力カードと出力カードがあります。WebSphere Transformation Extenderでは複数の入力と出力が可能であるため、各種のソースから読み取ったものをさまざまな場所に書き出す操作を、単一マップのコンテキスト内で行なうことができます。入力カードを作成する際の最も重要な設定はカード名です。入力カードと出力カードを定義すれば、マッピングは入力フィールドから出力フィールドにドラッグするだけの簡単な操作です。より複雑な機能を実行するために、WebSphere Transformation Extenderには、データの変換、それに対する数学的操作の実行、ストリングの操作などのタスクを行なうための組み込み関数が用意されています。すべての出力フィールドをマップすると、Map Designerツール内からマップをビルドし、それを実行できるようになります。
WebSphere Transformation Extenderのタイプ・ツリーおよびマップの作成に関する概念を理解したら、実際のマップを実行できます。単純な「Hello World」マップから始めて、より実際的な例へと進みます。
DataPowerで「Hello World」マップを実行する
最初にWebSphere Transformation Extenderエンジン、次にDataPowerを使用して、以下の手順で単純なWebSphere Transformation Extenderマップをロードし、実行します。
- WebSphere Transformation Extender Map Designerを起動します。
- 開始ダイアログで、「既存のマップ・ソース・ファイルを開く」を選択します。
- WebSphere Transformation Extenderインストール・ディレクトリーを参照し、次にexamples\DataPowerディレクトリーを参照して、Mail.mmsを開きます。
- ContactToLabelマップの横にDataPowerアイコンがあることに注意してください。このマップは、デフォルトではDataPowerエンジンとともに実行されるよう設定されています。このマップを標準のWebSphere Transformation Extenderランタイム・エンジンとともに実行するには、マップの設定を変更する必要があります。「マップ」 => 「設定」を選択します。リストの最後の項目はMapRuntimeになっているはずです。それをWebSphere Transformation Extenderに変更します。
- お分かりのように、このマップにはContactFile入力オブジェクトがあり、ラベル出力にマップされています。ContactFile構造を展開し、多数の連絡先レコードが含まれることを確認します。各レコードは、Last NameやFirst Nameなどの入力データから構成されています。出力構造は、メーリング・ラベルの作成にいくつかの入力フィールドを使用するラベルです。これらのフィールドの一部(FullNameなど)は、入力データのさまざまな断片の組み合わせです。
- このマップは完成しているので、ビルドおよび実行して、機能することを確認できます。「マップ」 => 「ビルド」を選択し、次に「マップ」 => 「実行」を選択します。
- 実行結果を表示するには、「マップ」 => 「実行結果」を選択し、「OK」をクリックします。2つのテキスト・ファイルが表示され、11個の入力オブジェクトが処理されたことと、5個の出力オブジェクトが作成されたことが示されます。
WebSphere Transformation Extenderエンジンを使用して、サンプル・マップを正常に実行しました。このマップをDataPower上で実行するための設定は、とても単純です。
- Map Designerで、マップを実行するDataPowerアプライアンスを次のようにして指定します。「ツール」 => 「オプション」を選択します。
- 「DataPowerマップ」を選択します。
- ご使用のDataPowerアプライアンスのホストおよびポート番号を設定します。これにより、データがMap Designerからご使用のアプライアンスにHTTPを使用して送信されます。Secure HTTPを使用する必要がある場合は、そのボックスを選択し、使用する証明書を設定します。このダイアログでは、DataPowerをデフォルトのランタイム・エンジンにして、Map DesignerがDataPowerを使用して交換するメッセージを保存することもできます。今の時点では、これらを単に選択しないままにすることができます。
- DataPowerを指定したので、マップをDataPowerランタイム・エンジンに変更します。「マップ」 => 「設定」を選択し、マップ・ランタイムをWebSphere DataPowerに変更します。
- これで、前の手順と同様にマップをビルドして実行できます。「マップ」 => 「ビルド」を選択し、次に「マップ」 => 「実行」を選択します。Map Designerは変換に必要なすべてのファイル(データを含む)をDataPowerエンジンに送信します。DataPowerエンジンはデータを変換し、結果をMap Designerに返します。
- 実行結果を表示するには、「マップ」 => 「実行結果」を選択します。
これで、単純なマップが完成し、WebSphere Transformation Extenderランタイム・エンジンとDataPowerランタイム・エンジンのどちらでもマップの実行が容易であることが分かりました。次のステップは、より実際的な例です。
XML→COBOLマップの作成
WebSphere Transformation Extender Design StudioをDataPowerとともに使用する最も強力なユース・ケースの1つは、XMLを取り込むことができる新規サービスにレガシー・アプリケーションを結合することです。Design Studioを使用すれば、この作業が容易になり、DataPowerアプライアンスを使用する利点を保持することができます。以下の例では、XMLデータを読み取り、それをCOBOLコピーブック形式で書き出します。データには単純な注文が含まれます。スキーマは以下のとおりです。
 |
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="item" type="xsd:string"/>
<xsd:element name="item_count" type="xsd:int"/>
<xsd:element name="shipTo" type="USAddress"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
<xsd:complexType name="USAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN"
fixed="US"/>
</xsd:complexType>
</xsd:schema>
|
|
このスキーマでは、PurchaseOrderTypeオブジェクトを定義します。このオブジェクトには、注文に関する情報のほかに、複数のフィールドから構成されるshipToアドレスが含まれます。このスキーマに対応する入力データは以下のとおりです。
 |
<?xml version="1.0"?>
<purchaseOrder orderDate="1999-01-21"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="po_2.xsd">
<item>Widget</item>
<item_count>15</item_count>
<shipTo country="US">
<name>John Doe</name>
<street>123 North St</street>
<city>Miami</city>
<state>FL</state>
<zip>33175</zip>
</shipTo>
</purchaseOrder>
|
|
出力は、以下の構造を持つCOBOLコピーブックです。
 |
000010 01 PURCHASE_ORDER.
000020 02 ITEM PIC X(30).
000030 02 ITEM_COUNT PIC S9(10).
000040 02 NAME PIC X(30).
000050 02 STREET PIC X(30).
000060 02 CITY PIC X(30).
000070 02 STATE PIC X(30).
000080 02 ZIP PIC S(11).
|
|
このソリューションを作成する最初のステップは、タイプ・ツリーの作成です。まず、以下のようにWebSphere Transformation Extender Schema Importerを使用してpurchase_order.xsdファイルをインポートします。
- WebSphere Transformation Extender Type Designerを開きます。
- 「タイプ・ツリーのインポート」を選択します。
- 「XML Schema」インポーターを選択します。
- purchase_order.xsdを参照して、「次へ」をクリックします。
- 「言語圏」のデフォルト設定は正しいので、「次へ」をクリックします。
- 「ファイル名」フィールドにpurchase_order.mttと入力し、「次へ」をクリックします。
- タイプ・ツリーが作成されたら、「完了」をクリックします。
- タイプ・ツリーを開くかどうかを尋ねるプロンプトが出される場合があります。その場合は「はい」をクリックします。
- 作成されたタイプ・ツリーが、Type Designer内に表示されているはずです。マップ内でツリーを使用する前に、ツリーを分析して、エラーがないことを確認する必要があります。「ツリー」 => 「解析」 => 「構造のみ」を選択します。廃棄された説明に関連する警告が表示される場合がありますが、これは正常です。
- タイプ・ツリーを保存して閉じます。
次に、同様のステップを実行してコピーブック用のタイプ・ツリーを作成します。
- 「ツリー」 => 「インポート」を選択します。
- 「COBOL Copybook」インポーターを選択します。
- po_copybook.cpyを参照して、「次へ」をクリックします。
- 「データ言語」の設定は正しいです。「次へ」をクリックします。
- 「ファイル名」フィールドに、出力ファイルの名前を入力し、「次へ」をクリックします。
- タイプ・ツリーが作成されたら、「完了」をクリックします。
- タイプ・ツリーを開くかどうかを尋ねるプロンプトが出される場合があります。その場合は「はい」をクリックします。
- 作成されたタイプ・ツリーが、Type Designer内に表示されているはずです。マップ内でツリーを使用する前に、ツリーを分析して、エラーがないことを確認する必要があります。「ツリー」 => 「解析」 => 「構造のみ」を選択します。
- タイプ・ツリーを保存して閉じます。
これで、入力と出力が定義されて、マップを完了できるようになりました。
- WebSphere Transformation Extender Map Designerを開き、新しいマップ・ソース・ファイルを作成します。
- 「マップ」 => 「新規作成」を選択し、マップXMLtoCOBOLを呼び出します。
- 「入力カード」を右クリックし、「新規作成」を選択します。
- カード名を「input」に設定し、タイプ・ツリー としてpurchase_order.mttを選択し、タイプとしてDocを選択し、入力元ファイルのパス名としてpo_xml_data.xmlを選択します。
- 「出力カード」を右クリックし、「新規」を選択します。
- カード名を「output」に設定し、タイプ・ツリー としてpo_copybook.mttを選択し、タイプとしてPURCHASE_ORDERを選択し、出力先ファイルのパス名としてpo_copybookdata.txtを選択します。
- 「入力カード」および「出力カード」ウィンドウで、タイプを展開します。ここには、入力カードと出力カードのすべてのフィールドが表示されます。関連する入力フィールドを出力フィールドにドラッグします。
- 「マップ」 => 「ビルド」を選択し、次に「マップ」 => 「実行」を選択します。実行結果を確認するには、「マップ」 => 「実行結果」を選択します。
- DataPowerでマップを実行するには、「マップの設定」ダイアログを使用してMapRuntimeをWebSphere DataPowerに変更し、ステップ8を繰り返します。
以上の例では、DataPowerで使用できるタイプ・ツリーとマップのビルド方法について説明しました。前のWebSphere Transformation Extenderのユーザーは、DataPowerランタイムでは特定の機能が制限されることに気付くはずです。ユーザーのためにプロセスを単純化するため、Map Designerはビルド時にチェックを実行して、制限される機能がマップに含まれていないことを確認します。これらの制限の完全なリストは、WebSphere Transformation Extender Design Studioの資料にあります。
この記事では、WebSphere DataPower SOAアプライアンス上でWebSphere Transformation Extender Design Studioを使用して、タイプ・ツリーとマップを作成し、それらをデプロイする方法について説明しました。DataPowerアプライアンスには、WebSphere Transformation Extender Design Studioとともに使用すると増強される、強力な機能が用意されています。
| 内容 |
ファイル名 |
サイズ |
ダウンロード形式 |
| コード・サンプル |
XMLtoCOBOL.zip |
27 KB |
HTTP(US) |
 |
Robert Vilaは、フロリダ州ウエスト・パーム・ビーチでWebSphere Transformation Extenderに取り組んでいるソフトウェア・エンジニアです。
|