「キャスト」機能を使用して、ローカル環境ツリー「変数」フォルダーに定義されている変数をメッセージ・マップに定義できます。
このタスクについて
ローカル環境ツリーは、メッセージ・フローがメッセージを処理する際に、情報を保管できる論理メッセージ・ツリーの一部です。ローカル環境ツリーを使用して、メッセージ・フローの後の方で生じる、メッセージ処理ノードが参照および更新できる変数を保管します。また、ローカル環境ツリーを使用して、メッセージを送信する宛先を定義することができます (メッセージ・フローの内部でも外部でもよい)。
ローカル環境ツリーをメッセージ・マップに追加する場合は、各エレメントの入力値が失われないようにすべてのエレメントの変換を指定する必要があります。入力フィールドは変更せずにコピーすることも、変換によって変更してコピーすることも可能です。
多くの WebSphere® Message
Broker ノードは、メッセージ・フローに沿ってコピーされるローカル環境ツリー内の情報に依存しています。
ローカル環境ツリー内の「変数」フォルダーは、xsd:any として定義されます。ローカル環境ツリーを追加すると、そのすべてのエレメントを含む宛先フォルダーと、汎用タイプを使用して定義された単一エレメントを含む「変数」フォルダーの構造が表示されます。
「変数」フォルダーに含まれるエレメントは手動で定義します。事前に定義された「変数」フォルダーの構造はありません。各メッセージ・フローには、それ固有のローカル環境ツリー「変数」フォルダーがあります。このため、メッセージ・マップ内のこれらのエレメントのいずれかにアクセスしたい場合は、「キャスト」機能を使用して、メッセージ・マップで使用する各エレメントを定義する必要があります。
注:
- 「キャスト」機能を使用して、メッセージ・マップのメッセージ・アセンブリーに他のエレメントを明示的に定義できます。
- WebSphere Message
Broker では、ローカル環境ツリーは WebSphere Message
Broker ノードによって作成および使用されたデータを反映するよう他のフォルダーを事前定義します。
このシナリオでは、メッセージ・フローの後の方でルーティングのために他のノードによって使用されるよう、ローカル環境ツリー「変数」フォルダーの下に Country という名前のエレメントを作成します。
手順
ローカル環境ツリー「変数」フォルダーに Country エレメントを追加するには、以下のステップを実行します。
- 入力ローカル環境ツリーと出力ローカル環境ツリーの間の Move 変換を定義します。入力ローカル環境ツリーと出力ローカル環境ツリーの間の接続を作成します。以下のいずれかの方法でこれを行うことができます。
- メッセージ・マップで、入力ローカル環境ツリーを右クリックし、「接続の作成」を選択します。マウスを出力ローカル環境ツリーに移動し、ローカル環境をクリックして Move 変換を定義します。
- メッセージ・マップで、入力ローカル環境ツリーを右クリックし、「クイック・リンク」を選択します。新規ウィンドウが表示され、このウィンドウで出力エレメント・ローカル環境を選択できるようになります。出力エレメントのリストが長い場合は、このオプションを使用します。「クイック・リンク」でリストをフィルタリングすることもできます。
ローカル環境ツリー内の一部のフィールドのみ変更する必要がある場合は、Move 変換を使用してローカル環境ツリーを変更しないままコピーし、「オーバーライド (Override)」機能を使用して更新の必要なエレメントを変更します。
以下の図では、入力のローカル環境ツリーと出力のローカル環境ツリーの間の Move 変換を定義する方法をわかりやすく示します。
すべての入力値が出力値にコピーされます。
- アプリケーション、サービス、またはライブラリー内にスキーマ・ファイルを作成して、ローカル環境ツリー「変数」フォルダーのエレメントとそれらのタイプを定義します。
- 「アプリケーション開発」ビューで、の順に選択します。「次へ」をクリックします。
- 「空の XML スキーマ・ファイルを作成し、XML スキーマ・エディターを使用してマイ・データをモデル化する」を選択し、「次へ」をクリックします。
- XSD ファイル LEVariablesFolderStructure.xsd を、プロジェクト AddressBookProvider 内に作成します。その後、「終了」をクリックします。
- ファイル LEVariablesFolderStructure.xsd が新規タブで開きます。このタブでは、XML スキーマ・エディターを使用して変数とそれらのタイプを定義します。
この例では、以下のスキーマを定義します。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Country" type="xsd:string"/>
<xsd:element name="CountryCode" type="xsd:integer"/>
</xsd:schema>
注: この例では、ノードがこれらのエレメントを読み取るのに、エレメントがネーム・スペース付きである必要はありません。このため、スキーマもネーム・スペース宣言なしに定義されています。
- 「キャスト」機能を使用して、メッセージ・マップでローカル環境変数を定義して、それらがマップ内の「変数」フォルダーの下に表示されるようにします。以下のステップを実行して、any エレメントを、出力ローカル環境ツリー内の変数とそのタイプにキャストします。
- any エレメントを右クリックして、「キャスト」を選択します。
- 「タイプの選択」ウィンドウで、「Country」を選択し、「OK」をクリックします。
タスクの結果
これで、ルーティングやフィルタリングのためにメッセージ・フローで他のノードが使用可能な 1 つのローカル環境変数を定義しました。
メッセージ・マップで、ローカル環境ツリー「変数」フォルダーの下にエレメント Country が表示されます。
次のタスク
SOAP メッセージを含めるようにメッセージ・マップを構成します。
詳しくは、SOAP メッセージを含めるようにメッセージ・マップを構成を参照してください。