-
tMysqlInputをダブルクリックして、[Basic settings] (基本設定)ビューを開きます。
-
Mysql接続とデータベーステーブルの基本設定を入力します。
[...]ボタンをクリックし、スキーマエディターを開きます。
-
[+]ボタンをクリックし、idと文字列型のnameの2つのカラムを追加します。
[OK]をクリックして、エディターを閉じます。
[Guess Query] (クエリーを推測)をクリックして、SQLクエリーを取得します。
-
tXMLMapをダブルクリックし、Mapperを開きます。
-
入力フロー側(左)の[main : row1] (メイン : 行1)テーブルでpayloadという名前のカラムを右クリックし、コンテキストメニューから[Import from Repository] (リポジトリーからインポート)を選択します。[Metadata] (メタデータ)ウィザードが開きます。
リクエストメッセージのスキーマを選択し、[OK]をクリックしてこの選択を検証します。この例では、スキーマはgetAirportInformationByISOCountryCodeです。
-
同じ手順を実行して、応答/フォールトメッセージ(右)の階層スキーマをインポートします。このサンプルでは、 これらのスキーマは、それぞれgetAirportInformationByISOCountryCodeResponseとgetAirportInformationByISOCountryCodeFaultです。
-
次に、ルックアップデータへの結合を作成するには、メインフローのCountryAbbrviationノードをルックアップフローのidカラムにドロップします。
-
ルックアップフローテーブルで、右上のレンチアイコンをクリックして設定パネルを開きます。
[Lookup Model] (ルックアップモデル)を[Reload at each row] (行ごとにリロード)に設定し、[Match Model] (一致モデル)を[All matches] (すべて一致)に設定し、[Join Model] (結合モデル)を[Inner join] (内部結合)に設定します。
-
airport_response出力フローテーブルで、右上のレンチアイコンをクリックして設定パネルを開きます。
[All in one] (すべて1つ)オプションをtrueに設定します。これにより、複数の空港がデータベース内に見つかった場合、各リクエストに対して1つの応答のみが返されます。
-
fault_message出力フローテーブルで、右上のレンチアイコンをクリックして設定パネルを開きます。
リクエスト内の国コードとデータベーステーブル内のレコードとの間の不一致を監視するには、[Catch Lookup Inner Join Reject] (内部結合ルックアップ拒否を捕捉)オプションをtrueに設定します。このような状況が発生すると、tESBConsumerによってフォールトメッセージが生成され、[Row] (行) > [Fault] (フォールト)フローによって出力されます。
情報メモ注:
tESBConsumerの[Row] (行) > [Fault] (フォールト)フローには事前定義されたスキーマがあります。そのfaultStringカラムには、tESBProviderFaultのフィールド[Fault title] (フォールトタイトル)のコンテンツが含まれています。
-
ルックアップフローのnameカラムを、airport_response出力フローのtns:getAirportInformationByISOCountryCodeResultノードの横にある[Expression] (式)エリアにドロップします。
メインフローのtns:CountryAbbreviationノードを、fault_message出力フローのtns:getAirportInformationByISOCountryCodeFaultStringノードの横にある[Expression] (式)エリアにドロップします。このようにして、リクエストの不正な国コードは、tESBConsumerの[Row] (行) > [Fault] (フォールト)フローのfaultDetailカラムに表示されます。
[OK]をクリックしてエディターを閉じ、この設定を有効にします。
-
tESBProviderFaultをダブルクリックして、[Basic settings] (基本設定)ビューを開きます。
-
フィールド[Fault title] (フォールトタイトル)に、コンテキスト変数context.fault_messageを入力します。