REST V2コネクタ > REST V2操作 > REST V2ソース操作
  

REST V2ソース操作

Webサービスアプリケーションからデータを読み取るには、Mapping Designerでソーストランスフォーメーションを作成します。
マッピングでソーストランスフォーメーションにREST V2接続を選択し、Webサービスアプリケーションからデータを読み取る場合、ソーストランスフォーメーションの[ソース]タブで操作を指定します。Secure Agentが、Swagger仕様で指定されている操作IDを表示します。
操作IDを選択し、Request Message Editorで付属のサンプルテンプレートを利用して要求メッセージを作成し、その操作の詳細プロパティを設定します。リレーショナルターゲットに書き込む場合は、階層形式の入力フィールドを、リレーショナル形式の出力フィールドにマッピングすることによって、ソースデータのリレーショナル構造を定義します。マッピングを実行すると、Secure Agentは、Webサービスアプリケーションから、指定されている操作用にデータを取得します。

Request Message Editorを使用した要求の設定

ソーストランスフォーメーションを作成する際、Webサービスアプリケーションで実行する操作に対するXML要求メッセージを設定します。
要求メッセージを作成するには、[Request Message Editor]を使用します。要求メッセージはXML形式です。その操作用のサンプル要求メッセージを使用すると、要求メッセージをカスタマイズして、データフローに含めるデータを指定できます。
要求をカスタマイズするには、要求メッセージをサンプルテンプレートから[Request Message Editor]ペインにコピーします。ここで、XMLメッセージを編集したり、要求に対して属性を追加したりできます。要求メッセージから不要なタグや空のタグを削除して、操作の失敗を回避します。
OpenAPI仕様で要求本文またはパラメータが定義されていない場合、要求メッセージテンプレートにはRequest_Portという名前の静的フィールドが表示されます。要求メッセージをサンプルテンプレートから[Request Message Editor]ペインにコピーします。このペインでは、XMLメッセージの編集や要求に対する属性の追加を行うことができます。
ヘッダーフィールド、パスパラメータ、およびクエリパラメータは、ソーストランスフォーメーション、ターゲットトランスフォーメーション、ミッドストリームトランスフォーメーションのフィールドとして表示されます。。

要求メッセージの入力値のパラメータ化

入出力パラメータを使用して、要求XMLの入力値を表現することができます。
Mapping Designerで入出力パラメータを設定します。[マッピング設計]ページで、パラメータパネルを開いて、入出力パラメータを設定します。
次の図は、設定されたempID入力パラメータ値を示しています。
パラメータを設定したら、要求メッセージ内で$$Name形式のパラメータ名を使用します。XMLは、パラメータ化されたオブジェクトから取得されたフィールド値を使用します。
例えば、CouchDB_INPUT操作に対するXML要求で、パラメータ化されたempIDを使用するとします。
次のサンプル要求は、XML要求で指定できるパラメータ化値を示しています。
<!--1 or more repetitions:-->
<proc:CouchDB_INPUT xmlns:proc="http://xml.schemas/infa/procedure/">
<!--Optional:-->
<CouchDB>
<!--1 or more repetitions:-->
<emp>
$$empID
</emp>
</CouchDB>
</proc:CouchDB_INPUT>

マッピングでの入出力パラメータ値の設定

差分データロードを管理するタスクが実行されるたびに変更可能な変数値を保持する入出力パラメータを使用できます。
タスクが実行されるたびにパラメータを更新する場合は、マッピングで、入出力パラメータ化されたフィールドを複合式に追加します。入出力パラメータは、タスク手順を格納した値用プレースホルダーのような働きをします。データ統合は、実行時、指定された設定に基づいてパラメータを評価します。
例えば、次のパラメータ化された値を式トランスフォーメーションで使用できます。
SetVariable( $$empID, CONCAT(SUBSTR($$empID,1,3),TO_INTEGER(SUBSTR($$empID,4,2))+1) )
この例では、SetVariable関数は、マッピングタスクが実行されるたびに、パラメータ値を設定します。$$empIDパラメータにはデフォルト値を設定します。タスクが実行されるたびに$$empID値を1ずつ更新します。
次の図は、Mapping Designerで入出力パラメータに値を割り当てる、式トランスフォーメーションで使用されるロジックを示しています。
タスクが実行されると、Secure Agentにより、式内で指定されているロジックに従って、入出力パラメータが更新されます。

ソーストランスフォーメーションでのフィールドマッピング

応答メッセージ形式は、SwaggerまたはOpenAPI仕様ファイル内のサービス応答定義に従います。階層構造の応答フィールドを、出力グループおよびフィールドのリレーショナル構造にマッピングできます。
ソースの操作を設定し、要求メッセージを指定した後、必要なグループとフィールドを出力に含めるように、階層データからリレーショナル形式を作成します。
このためには、出力フィールドとして含める要素を応答構造で選択します。Secure Agentは、実行時に、階層構造のXML応答をリレーショナルグループに変換します。
SwaggerまたはOpenAPI仕様で応答本文が定義されていない場合、フィールドマッピングにはResponse_Portという名前の静的フィールドが表示されます。
フィールドマッピングには、応答ヘッダーとCookieを含むOtherResponseheadersおよびOtherCookiesという名前の静的フィールドが表示されます。

パック済みフィールドの作成

階層要素を解析する必要がない場合は、複数の要素を1つのフィールドにパックできます。また、ターゲットに書き込む際に、配列要素をパックすることもできます。
[フィールドマッピング]タブでは、要素の隣にパックアイコンが表示されます。要素の隣にあるパックアイコンを選択すると、エージェントは実行時、その要素とその子要素を単一のXML文字列にパックします。フィールドマッピングにおいて、パック済みフィールドの子要素に当たるフィールドは選択できません。
パックアイコンをクリックすれば、フィールドのパックを解除できます。
複数のフィールドをパックするには、行要素の隣に表示されるパックアイコンをクリックします。
次の図は、バック済み行要素を示しています。
次のサンプルは、タスク実行後のターゲットファイル内のrowsフィールドの出力を示しています。
<infa_packed>
<rows>
<id>52835a523b9b6816ec81e9585b09c987</id>
<key>52835a523b9b6816ec81e9585b09c987</key>
<value>
<rev>1-c7fe1b7b899a9ce50319a47d675af735</rev>
</value>
</rows>
</infa_packed>