以前のバージョンの WebSphere® Message Broker のメッセージ・マップをグラフィカル・データ・マップに変換した場合、そのグラフィカル・データ・マップをメッセージング・ソリューションで使用する前に、追加のタスクの実行が必要になることがあります。
メッセージ・マッピングは ESQL コードに重点を置いていましたが、グラフィカル・データ・マッピング・エディター機能では専用のランタイム実行エンジンを使用します。
メッセージ・マップをグラフィカル・データ・マップに変換する準備をしている場合は、以下の点を考慮する必要があります。
ランタイムには、グラフィカル・データ・マップ用に Java ベースの専用ランタイム実行エンジンが備わっています。 その結果、マップ実行では XPath 2.0 および Java JIT 最適化の完全サポートを利用でき、信頼性が向上します。
グラフィカル・データ・サブマップを起動できる場所は、Mapping ノードの最上位のグラフィカル・データ・マップだけです。
メッセージ・サブマップ・マップを起動するために ESQL Compute ノードで ESQL の「CALL」ステートメントを使用できますが、グラフィカル・データ・マップではこの機能がサポートされません。 このような方法で使用されるメッセージ・マップを変換した場合、ESQL の「CALL」ステートメントは失敗し、「関数を解決できない」という報告が出力されます。 解決策としては、Compute ノードの代わりに、変換したサブマップを呼び出すことのできる新しいグラフィカル・データ・マップを含む新しい Mapping ノードに置き換えます。
ESQL では、空とは異なる特殊な NULL 値が定義されています。 NULL を名前付きエレメントに割り当てたり、呼び出した ESQL 関数の戻りの NULL 値をエレメントに設定したりすると、エレメントがツリーから削除されます。
グラフィカル・データ・マップでは、ESQL NULL は空のエレメント、または xsi:nil 属性が設定された空のエレメントを生成します (モデルでエレメントがヌル可能として定義されている場合)。 その結果、場合によっては、グラフィカル・データ・マップの出力に予期しない空のエレメントが含まれ、それが原因で XML スキーマ妥当性検査違反などの処理上の問題が生じることがあります。 通常、このような問題は、状況に応じて ESQL NULL を返す ESQL ユーザー定義関数が呼び出された場合に発生します。 この問題を防ぐには、NULL が返されるような場合に呼び出しを防止するための条件をカスタム変換に追加します。
単純な形式 TRIM-BOTH ( Source ) は変換されます。
このセクションでは、以前のメッセージ・マッピング・エディターで異なる構造体を使って実装された変換タスクの実装方法について説明します。 このリストは完全なリストではありませんが、グラフィカル・データ・マップの概念および開発について検討する際に役に立ちます。
Assign 変換を使用して、出力エレメントでのリテラル値を設定できます。 Assign 変換はストリング表記を使用します。これは、該当する出力エレメントに割り当てられるため、そのタイプに応じてフォーマット設定される必要があります。 引用符はストリング値の一部として渡されるため、プロパティー値を引用符で囲む必要はありません。 明示的に型指定された値を渡す場合は、入力ワイヤリングのない xs:<type> Cast 変換を使用してください。
メッセージ・マッピング・エディターでは、型キャストを暗黙指定して基礎となるストリング値表記を使用する式を作成できました。 グラフィカル・データ・マッピング・エディターでは XPath 式構文を使用し、厳密な型指定が実施されます。 例えば、ブール・タイプのエレメントでストリング・リテラル値「true」をテストすると、タイプ例外が発生します。
メッセージ・マップには、XPath 関数に類似する関数が備わっており、これらは対応する ESQL 関数によって実行時に実装されます。 これらの ESQL 関数の中には、関数の XPath 仕様で定義されているよりも値の型指定が緩やかなものがあります。 グラフィカル・データ・マッパーには、準拠する XPath 関数が備わっています。 したがって、メッセージ・マップを変換して作成されたグラフィカル・データ・マップは、無効な値や型キャストの問題が原因で実行時に失敗する可能性があります。 特に、パラメーター値が空の場合に、対応する ESQL 関数がデフォルト値を設定することがあります。 このような問題を解決するには、Xpath 関数パラメーターとして無効な値が関数に渡されることを防止する条件を追加してください。
メッセージ・マップでは、条件式で複合タイプ・エレメントの混合内容のテキスト値にアクセスするときに、ユーザーが明示的な指定を行う必要はありません。 グラフィカル・データ・マッパーは、標準的な XPath 構文に基づいているため、 「/text()」を明示的に使用して、混合内容のテキスト値を使用することを示す必要があります。 このため、混合内容のテキスト値を参照していた条件式を含むメッセージ・マップを変換した場合は、欠落している「/text()」を追加するためにパス式を拡張しない限り、失敗する可能性があります。
メッセージ・マップ・エディターでは、サブマップ入力の型指定が正しく検証されませんでした。 ユーザーは、サブマップ入力の標準的なエレメント・パス値を編集し、型のないリテラル値を代わりに指定することができました。 グラフィカル・データ・マッパーの検証では、すべてのサブマップ入力が、適切に型指定された入力エレメントに接続されている必要があります。
変換によっては、「For each index」カウンター値を使用する必要があります。 バージョン 6.1 およびバージョン 7.0 のメッセージ・マップには、現在のループ・カウントを取得するための msgmap:occurrence 関数が備わっていました。 グラフィカル・データ・マッパーには For loop カウンター変数があり、これを使用して同等の機能を利用できます。 この変数の名前は、$<For each primary input element name>-index という固定形式です。 これを取得するには、関連する「ForEach 変換」の「フィルター・プロパティーの式」パネルのコンテンツ・アシスト (Ctrl+Space) を使用するか、ネストされた変換内のコンテンツ・アシストを使用できます。