メイン コンテンツをスキップする 補完的コンテンツへスキップ

データサービスプロバイダーの作成

このシナリオでは、データサービスプロバイダーでtESBProviderRequestコンポーネントとtESBProviderResponseコンポーネントを使って、空港のウェブサービスへのアクセスを可能にし、tXMLMapコンポーネントを使って、MySQLデータベースから提供される空港のデータを要求・応答呼び出しメインフローに結合して、公開します。データベースのデータはtMysqlInputコンポーネントによりロードされます。

データサービスプロバイダージョブの作成

Procedure

  1. [Repository] (リポジトリー)ツリービューの[Services] (サービス)ノードの下で、定義したばかりの空港ウェブサービスの操作を右クリックし、コンテキストメニューから[Assign Job] (ジョブを割り当て)を選択します。このシナリオでは、この操作はgetAirportInformationByISOCountryCodeです。
  2. [Assign Job] (ジョブを割り当て)ウィザードが開きます。[Create a new Job and Assign it to this Service] (新規ジョブをサービスに割り当て)を選択し、[Next] (次へ)をクリックします。
  3. ウィザードの[New Job] (新規ジョブ)ビューで、作成するジョブに自動的に名前が付いているため、[Finish] (終了)をクリックします。ワークスペースでジョブのドラフトが開きます。

プロバイダー用にコンポーネントをドロップしてリンク

ジョブのドラフトでは、tESBProviderRequesttESBProviderResponseが既に選択され設定されています。tESBProviderRequestにより、指定したウェブサービスに要求が送信され、tESBProviderResponseにより、その要求への応答が返されます。これらのコンポーネントは、[Palette] (パレット)[ESB]グループにあります。

Procedure

  1. tESBProviderRequestを右クリックし、それをクリックしたままtESBProviderResponseにドラッグし、この2つのコンポーネントをリンクします。
  2. [Palette] (パレット)から行リンクの中央にtXMLMapを配置し、ポップアップウィンドウで出力リンクに名前(airport_responseなど)を付けます。これはtXMLMapのマップエディターの出力テーブルの名前としても使用されます。

    その結果、データサービスプロバイダーのジョブは次の図のようになります:

    デザインワークスペース内のジョブのスクリーンショット。

    赤いxアイコンにより、tXMLMapコンポーネントの設定が求められます。

  3. [Repository] (リポジトリー)ツリービューの[Db Connections] (DB接続)ノードからワークスペースに、空港データへの接続(この例ではairportデータベーステーブル)を配置します。[Components] (コンポーネント)ウィザードが開きます。
    [Repository] (リポジトリー)でデータベース接続を作成する方法は、Studioでメタデータを管理をご覧ください。
  4. このウィザードでtMysqlInputをダブルクリックし、ワークスペースで該当するコンポーネントを作成して、それをtXMLMapにリンクさせます。

Results

このシナリオでは、空港データは、空港名と該当する国コードで構成されます。次の表は、使用中のデータベーステーブルを示しています。

データベーステーブル。

これまで、tXMLMap以外のコンポーネントは自動的に設定されていたため、tXMLMapをのみを設定する必要がありました。

tXMLMapの設定

Procedure

  1. デザインワークスペースでtXMLMapをダブルクリックし、エディターを開きます。
    [Map Editor] (マップエディター)
  2. 入力フロー側(左)のメインの行テーブルでpayloadという名前のカラムを右クリックし、コンテキストメニューから[Import from Repository] (リポジトリーからインポート)を選択します。[Metadatas] (メタデータ)ウィザードが開きます。
    XMLツリーの作成方法の詳細は、ドキュメントタイプを使ってXMLツリーを作成をご覧ください。
  3. このウィザードで[File XML] (XMLファイル)ノードを展開し、リクエスト側のスキーマを選択し、[OK]をクリックして選択を確定します。この例では、スキーマはgetAirportInformationByISOCountryCodeです。
    [Metadata] (メタデータ)ウィザード。
  4. 同じ手順を実行して、応答側(右)の階層スキーマをインポートします。この例では、スキーマはgetAirportInformationByISOCountryCodeResponseです。
  5. ルックアップデータへの結合を作成するため、入力フロー側(左)のメインの行テーブルでCountryAbbrviationノードをクリックし、それをクリックしたまま、ルックアップフローのExp.keyカラムにドロップします。これはid行に対応するものです。
  6. ルックアップフローを表すテーブルで右上のレンチアイコンをクリックし、設定パネルを開きます。
  7. [Lookup Model] (ルックアップモデル)[Reload at each row] (行ごとにリロード)に設定し、[Match Model] (一致モデル)[All matches] (すべて一致)に設定し、[Join Model] (結合モデル)[Inner join] (内部結合)に設定します。
    ルックアップフローテーブルのスクリーンショット。
    詳細情報:
  8. 同じ手順を繰り返して、出力側(右)の設定パネルを開き、[All in one] (一度に1つの応答)オプションを[true] (真)に設定します。これにより、1つの要求が送信されると1つの応答のみが返されます。この設定を行わないと、所定のデータベースの空港データは複数の空港のデータを提供する場合があり、1つの要求として送信した国コードに対して複数の応答が返されることがあります。
    [All in one] (オールインワン)の詳細は、エレメントを1つのドキュメントに出力する方法をご覧ください。
    出力テーブルのスクリーンショット。
  9. ルックアップフロー(左)で名前の行をクリックし、それをクリックしたまま[Expression] (式)カラムにドロップします。これは出力フロー(このサンプルではairport_response)のXMLツリービューのtns:getAirportInformationByISOCountryCodeResultノードに対応します。

    tXMLMapエディターは次のようになります:

    [Map Editor] (マップエディター)
    情報メモNote:

    実際は、ルックアップに階層データも追加できます。

  10. [OK]をクリックしてエディターを閉じ、この設定を有効にします。

プロバイダージョブの実行

About this task

これでコンポーネントが設定されたため、ジョブを実行できます。

この設定は次のように行います。

Procedure

F6を押してこのジョブを実行します。実行が開始されると[Run] (実行)ビューが開き、実行結果が表示されます。
ジョブの実行に成功した後のコンソール結果のスクリーンショット。

Results

データサービスプロバイダーのジョブが実行されると、[Kill] (強制終了)ボタンをクリックして停止するまで、ウェブサービスに送信されるすべての要求がリッスンされます。デフォルトで、tESBProviderRequest[Basic settings] (基本設定)ビューの[Keep listening] (リスニングの継続)が自動的に選択されています。

What to do next

作成したばかりのデータサービスプロバイダーのジョブに実際の要求を送信するコンシューマーのジョブを設定する必要があります。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。