SetIntegrationRequest ポリシー

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

ポリシー アイコン

概要

SetIntegrationRequest ポリシーを使用すると、実行する統合のリクエスト オブジェクトを作成できます。ポリシーでは、統合を実行するために必要な API トリガーの詳細と入力パラメータを構成する必要があります。SetIntegrationRequest ポリシーを実行すると、リクエスト オブジェクトが作成され、フロー変数に保存されます。リクエスト オブジェクトには、統合の実行に必要な情報がすべて含まれます。この段階では、統合はまだ実行されていません。統合を実行するには、IntegrationCallout ポリシーを呼び出すか、IntegrationEndpoint を設定する必要があります。IntegrationCallout ポリシーと IntegrationEndpoint のどちらにも、統合を実行するリクエスト オブジェクトが必要です。

このポリシーは拡張可能なポリシーです。Apigee ライセンスによっては、このポリシーの使用によって費用や使用量に影響する場合があります。ポリシータイプと使用量への影響については、ポリシータイプをご覧ください。

<SetIntegrationRequest>

SetIntegrationRequest ポリシーを指定します。

デフォルト値 なし
必須かどうか 必須
複合型
親要素 なし
子要素 <ApiTrigger>
<DisplayName>
<IntegrationName>
<IntegrationRegion>
<Parameters>
<ProjectId>
<Request>
<ScheduleTime>

次の表に、<SetIntegrationRequest> 要素の子要素の概要を示します。

子要素 必須かどうか 説明
<ApiTrigger> 必須 統合で呼び出す API トリガーの名前。
<DisplayName> 省略可 ポリシーのカスタム名。
<IntegrationName> 省略可 実行する統合の名前。
<IntegrationRegion> 必須 統合が存在するリージョンの名前。
<Parameters> 省略可 統合の入力パラメータ。
<ProjectId> 省略可 実行する統合がある Google Cloud プロジェクトの名前。
<Request> 省略可 リクエスト オブジェクトを保存するフロー変数の名前。
<ScheduleTime> 省略可 統合を実行する時刻。

SetIntegrationRequest ポリシーでは次の構文を使用します。

構文

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SetIntegrationRequest continueOnError="[true|false]" enabled="[true|false]" name="Set-Integration-Request">
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  <ProjectId ref="FLOW_VARIABLE_NAME">GOOGLE_CLOUD_PROJECT_ID</ProjectId>
  <IntegrationName ref="FLOW_VARIABLE_NAME">INTEGRATION_NAME</IntegrationName>
  <IntegrationRegion ref="FLOW_VARIABLE_NAME">INTEGRATION_REGION</IntegrationRegion>
  <ApiTrigger ref="FLOW_VARIABLE_NAME">API_TRIGGER_NAME</ApiTrigger>
  <ScheduleTime>PARAMETER_VALUE</ScheduleTime>
  <Parameters>
    <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE" ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Parameter>
    <ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE" ref="FLOW_VARIABLE_NAME>
      <Value ref="FLOW_VARIABLE_NAME>PARAMETER_VALUE</Value>
      <Value ref="FLOW_VARIABLE_NAME>PARAMETER_VALUE</Value>
      <Value ref="FLOW_VARIABLE_NAME>PARAMETER_VALUE</Value>
    </ParameterArray>
  </Parameters>
  <Request>FLOW_VARIABLE_NAME</Request>
</SetIntegrationRequest>

次の例では、SetIntegrationRequest ポリシーの定義を示します。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SetIntegrationRequest continueOnError="false" enabled="true" name="Set-Integration-Request">
  <DisplayName>Set Integration Request Policy</DisplayName>
  <ProjectId ref="my_projectid_var">apigee_staging_1</ProjectId>
  <IntegrationName ref="my_integration_ref">integration_1</IntegrationName>
  <IntegrationRegion ref="my_integration_ref">asia-east1</IntegrationRegion>
  <ApiTrigger ref="my_api_trigger_ref">API-Trigger-2</ApiTrigger>
  <ScheduleTime>2022-01-15T01:30:15Z</ScheduleTime>
  <Parameters>
    <Parameter name="my_str_param" type="string" ref="flow_var_1">someText</Parameter>
    <ParameterArray name="my_array_param" type="integer" ref="flow_var_2">
      <Value ref="flow_var_3">1</Value>
      <Value ref="flow_var_4">2</Value>
      <Value ref="flow_var_5">3</Value>
    </ParameterArray>
  </Parameters>
  <Request>my_request_var</Request>
</SetIntegrationRequest>

この要素には、すべてのポリシーに共通する次の属性があります。

属性 デフォルト 必須かどうか 説明
name なし 必須

ポリシーの内部名。name 属性の値には、英字、数字、スペース、ハイフン、アンダースコア、ピリオドを使用できます。この値は 255 文字を超えることはできません。

管理 UI プロキシ エディタで <DisplayName> 要素を追加して、ポリシーのラベルに使用する別の自然言語名を指定することもできます。

continueOnError false 省略可 ポリシーが失敗したときにエラーを返す場合は、false に設定します。これは、ほとんどのポリシーで想定される動作です。ポリシーが失敗した後もフローの実行を続行する場合は、true に設定します。関連情報:
enabled true 省略可 ポリシーを適用するには、true に設定します。ポリシーを無効にするには、false に設定します。ポリシーがフローに接続されている場合でも適用されません。
async   false 非推奨 この属性は非推奨となりました。

子要素のリファレンス

このセクションでは、<SetIntegrationRequest> の子要素について説明します。

<DisplayName>

name 属性に加えて、管理 UI プロキシ エディタでポリシーを別の、より自然な響きの名前でラベル付けするために使います。

<DisplayName> 要素はすべてのポリシーに共通です。

デフォルト値 なし
必須かどうか 省略可。<DisplayName> を省略した場合、ポリシーの name 属性の値が使用されます。
文字列
親要素 <PolicyElement>
子要素 なし

<DisplayName> 要素の構文は次のとおりです。

構文

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 要素に属性や子要素はありません。

<ProjectId>

Google Cloud プロジェクトの名前を指定します。

この要素に指定した値が、Apigee によって integration.project.id フロー変数に割り当てられます。

デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<ProjectId> 要素の構文は次のとおりです。

構文

<ProjectId ref="FLOW_VARIABLE_NAME">GOOGLE_CLOUD_PROJECT_ID</ProjectId>

次の例では、my_projectid_var フロー変数を使用してプロジェクト ID を取得するようにポリシーを構成し、ランタイム時にフロー変数を解決できない場合は、apigee_staging_1 をプロジェクト ID として使用します。

<ProjectId ref="my_projectid_var">apigee_staging_1</ProjectId>

次の表に、<ProjectId> 要素の属性を示します。

属性 必須かどうか 種類 説明
ref 省略可 文字列 Apigee が Google Cloud プロジェクト ID を読み取るフロー変数を指定します。<ProjectId> 要素は、次のいずれかの方法で設定できます。
  • <ProjectId>val</ProjectId>: val をプロジェクト ID として使用します。
  • <ProjectId ref="refval"/>: refval を動的に解決してプロジェクト ID を特定します。解決されたプロジェクト ID が無効か、refval が解決されない場合、Apigee は例外を報告します。
  • <ProjectId ref="refval">val</ProjectId>: refval を動的に解決してプロジェクト ID を特定します。解決されたプロジェクト ID が無効な場合は、Apigee が例外を報告します。refval が解決しない場合は、val をプロジェクト ID として使用します。

<IntegrationName>

実行する統合を指定します。

この要素に指定した値が、Apigee によって integration.name フロー変数に割り当てられます。

統合名は次の命名規則を満たす必要があります。

  • 先頭と末尾は英字または数字にする必要があります。
  • スペースは使用できません。
  • 連続する 2 つのダッシュやアンダースコアは使用できません。
デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<IntegrationName> 要素の構文は次のとおりです。

構文

<IntegrationName ref="FLOW_VARIABLE_NAME">INTEGRATION_NAME</IntegrationName>

次の例では、my_integration_ref フロー変数を使用して統合名を取得するようにポリシーを構成し、ランタイム時にフロー変数を解決できない場合は、integration_1 を統合名として使用します。

<IntegrationName ref="my_integration_ref">integration_1</IntegrationName>

次の表に、<IntegrationName> 要素の属性を示します。

属性 必須かどうか 種類 説明
ref 省略可 文字列 Apigee が統合名を読み取るフロー変数を指定します。<IntegrationName> 要素は、次のいずれかの方法で設定できます。
  • <IntegrationName>val</IntegrationName>: 統合名として val を使用します。
  • <IntegrationName ref="refval"/>: refval を動的に解決して、統合名を判断します。解決された統合名が無効であるか、refval が解決されない場合、Apigee は例外を報告します。
  • <IntegrationName ref="refval">val</IntegrationName>: refval を動的に解決して、統合名を判断します。解決された統合名が無効な場合、Apigee は例外を報告します。refval が解決されない場合は、統合名として val を使用します。

<IntegrationRegion>

統合が存在するリージョンを指定します。

Apigee はランタイムに要素の値を integration.region フロー変数に割り当て、リージョンベースのターゲット URL を作成し、作成した URL を integration.target.url フロー変数に保存します。

リージョン ベースのターゲット URL は https://integration.region-integrations.googleapis.com の形式になります。

統合リージョンは、Application Integration でサポートされている必要があります。Application Integration のサポート対象リージョンについては、サポートされているリージョンをご覧ください。

デフォルト値 なし
必須かどうか 必須
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<IntegrationRegion> 要素の構文は次のとおりです。

構文

<IntegrationRegion ref="FLOW_VARIABLE_NAME">INTEGRATION_REGION</IntegrationRegion>

次の例では、my_integration_region_ref フロー変数を使用して統合リージョンを取得するようにポリシーを構成し、実行時にフロー変数を解決できない場合は、統合のリージョンとして asia-east1 が使用されます。

<IntegrationRegion ref="my_integration_region_ref">asia-east1</IntegrationRegion>

次の表に、<IntegrationRegion> 要素の属性を示します。

属性 必須かどうか 種類 説明
ref 省略可 文字列 Apigee が統合リージョンを読み取るフロー変数を指定します。<IntegrationRegion> 要素は、次のいずれかの方法で設定できます。
  • <IntegrationRegion>val</IntegrationRegion>: 統合リージョンとして val を使用します。
  • <IntegrationRegion ref="refval"/>: refval を動的に解決して、統合リージョンを特定します。解決された統合リージョンが無効であるか、refval が解決されない場合、Apigee は例外を報告します。
  • <IntegrationRegion ref="refval">val</IntegrationRegion>: refval を動的に解決して、統合リージョンを特定します。解決された統合リージョンが無効な場合、Apigee は例外を報告します。refval が解決されない場合は、統合リージョンとして val を使用します。

<ApiTrigger>

実行する API トリガーを指定します。

API トリガー名は api_trigger/API_TRIGGER_NAME の形式で指定する必要があります。

この要素に指定した値が、Apigee によって integration.api.trigger フロー変数に割り当てられます。

<IntegrationName> を指定した場合は、その統合の API トリガーのみが実行されます。ただし、<IntegrationName> を指定していない場合は、指定された API トリガーを持つすべての統合が実行されます。

デフォルト値 なし
必須かどうか 必須
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<ApiTrigger> 要素の構文は次のとおりです。

構文

<ApiTrigger ref="FLOW_VARIABLE_NAME">API_TRIGGER_NAME</ApiTrigger>

次の例では、my_api_trigger_ref フロー変数を使用して API トリガー名を取得するようにポリシーを構成し、ランタイム時にフロー変数を解決できない場合は、api_trigger/API-Trigger-2 を API トリガー名として使用します。

<ApiTrigger ref="my_api_trigger_ref">api_trigger/API-Trigger-2</ApiTrigger>

次の表に、<ApiTrigger> 要素の属性を示します。

属性 必須かどうか 種類 説明
ref 省略可 文字列 Apigee が API トリガー名を読み取るフロー変数を指定します。<ApiTrigger> 要素は、次のいずれかの方法で設定できます。
  • <ApiTrigger>val</ApiTrigger>: API トリガー名として val を使用します。
  • <ApiTrigger ref="refval"/>: refval を動的に解決してトリガー名を判断します。解決された API トリガー名が無効であるか、refval が解決されない場合、Apigee は例外を報告します。
  • <ApiTrigger ref="refval">val</ApiTrigger>: refval を動的に解決してトリガー名を判断します。解決された API トリガー名が無効な場合、Apigee は例外を報告します。refval が解決されない場合は、トリガー名として val を使用します。

<ScheduleTime>

統合を実行する時刻を指定します。

時刻が現在の時刻と等しいか、それより前である場合は、すぐに統合が実行されます。時刻は yyyy-mm-ddThh:mm:ssZ 形式で指定する必要があります。ここで、Z は UTC タイムゾーンです。たとえば、2022-01-15T01:30:15Z を指定した場合、統合は 2022 年 1 月 15 日 1 時 30 分 15 秒(UTC)に実行されるようにスケジュールされます。UTC からのオフセットを使用してタイムゾーンを指定することもできます。たとえば、2022-01-15T01:30:15-08:00 を指定した場合、統合は 2022 年 1 月 15 日 1 時 30 分 15 秒(PST)に実行されるようにスケジュールされます。時刻の形式の詳細については、組み合わせた日時の表現をご覧ください。

デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<ScheduleTime> 要素の構文は次のとおりです。

構文

<ScheduleTime>PARAMETER_VALUE</ScheduleTime>

次の例では、2022-01-15T01:30:15Z に統合を実行するようにスケジュールします。

<ScheduleTime>2022-01-15T01:30:15Z</ScheduleTime>

<Parameters>

統合の実行に必要な入力パラメータを指定します。

個々のパラメータまたはパラメータ配列を指定できます。

  • 個々のパラメータを指定するには、<Parameter> 要素を使用します。
  • パラメータ配列を指定するには、<ParameterArray> 要素を使用します。
デフォルト値 なし
必須かどうか 省略可
複合型
親要素 <SetIntegrationRequest>
子要素 <Parameter>
<ParameterArray>

次の表に、<Parameters> の属性を示します。

属性 必須かどうか 種類 説明
substitutionVariableChar 省略可 文字列 <Parameter> 子要素でカスタム区切り文字を設定して、フロー変数の値をテンプレート引数として渡すことができます。

<Parameters> 要素の構文は次のとおりです。

構文

<Parameters substitutionVariableChar="SUBSTITUTION_CHAR">
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE" ref="FLOW_VARIABLE_NAME" >PARAMETER_VALUE</Parameter>
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE">SUBSTITUTION_CHAR FLOW_VARIABLE_NAME SUBSTITUTION_CHAR</Parameter>
  <ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE ref="FLOW_VARIABLE_NAME"">
    <Value>PARAMETER_VALUE</Value>
    <Value ref="FLOW_VARIABLE_NAME"/>
    <Value ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Value>
  </ParameterArray>
</Parameters>

次の例では、my_str_param パラメータと my_array_param パラメータ配列を初期化します。

<Parameters substitutionVariableChar="#">
  <Parameter name="my_str_param" type="string" ref="flow_var_1">someText</Parameter>
  <Parameter name="strVar" type="string">#flowvar1#</Parameter>
  <ParameterArray name="my_array_param" type="integer" ref="flow_var_2">
    <Value>1</Value>
    <Value ref="flow_var_3"/>
    <Value ref="flow_var_4">3</Value>
  </ParameterArray>
</Parameters>

Apigee は、空の <Parameter> 要素と <ParameterArray> 要素を null 値として扱います。たとえば、<Parameter></Parameter><ParameterArray></ParameterArray> などの宣言は null 値として処理されます。

<Parameter>

入力パラメータを指定します。

デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <Parameters>
子要素 なし

パラメータ値は次の方法で指定できます。

  • <Parameter name="my_param" type="string">val</Parameter>: パラメータ値として val を使用します。val が無効な場合、Apigee は例外を報告します。
  • <Parameter name="my_param" type="string" ref="refval"/>: ランタイム時に refval フロー変数を解決し、その値を使用します。解決された refval の値が無効か、refval が解決されない場合、Apigee は例外を報告します。
  • <Parameter name="my_param" type="string" ref="refval">val</Parameter>: 実行時に refval フロー変数を解決し、その値を使用します。解決された refval の値が無効である場合、Apigee は例外を報告します。refval が解決されない場合、Apigee はパラメータ値として val を使用します。
  • <Parameter name="my_param" type="json">{"name":"$#flowval#$"}</Parameter>: $#FLOW_VARIABLE_NAME#$ を使用してフロー変数の値をパラメータのテンプレート引数として渡します。Apigee は実行時に flowval フロー変数を解決し、その値を使用します。解決された flowval 値が無効な場合は、例外が報告されます。
  • <Parameter name="my_param" type="json">{"name":"SUBSTITUTION_CHAR flowval SUBSTITUTION_CHAR"}</Parameter>: ここで SUBSTITUTION_CHAR<Parameters> 親要素の substitutionVariableChar 属性に指定された値です。Apigee は実行時に flowval フロー変数を解決し、その値を使用します。解決された flowval 値が無効な場合は、例外が報告されます。

<Parameter> 要素の構文は次のとおりです。

構文
<Parameters substitutionVariableChar="SUBSTITUTION_CHAR">
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE">PARAMETER_VALUE</Parameter>
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE" ref="FLOW_VARIABLE_NAME"/>
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE" ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Parameter>
  <Parameter name="PARAMETER_NAME" type="json">$#FLOW_VARIABLE_NAME#$</Parameter>
  <Parameter name="PARAMETER_NAME" type="PARAMETER_DATATYPE">SUBSTITUTION_CHAR FLOW_VARIABLE_NAME SUBSTITUTION_CHAR</Parameter>
</Parameters>
例 1

次の例では、my_str_param パラメータを文字列として宣言し、値を someText に設定します。

<Parameters>
  <Parameter name="my_str_param" type="string">someText</Parameter>
</Parameters>
例 2

次の例では、my_double_param パラメータを double として宣言し、flow_var フロー変数の値をパラメータに割り当てています。

<Parameters>
  <Parameter name="my_double_param" type="double" ref="flow_var"/>
</Parameters>
例 3

次の例では、my_int_param_1 整数パラメータに値を設定しています。

<Parameters>
  <Parameter name="my_int_param_1" type="integer" ref="flow_var_1">96</Parameter>
</Parameters>

この例では、flow_var_1 フロー変数が正常に解決されると、my_int_param_1 がフロー変数の値に設定されます。ただし、flow_var_1 を解決できない場合、my_int_param_196 に設定されます。

例 4

次の例では、my_json_param_1my_json_param_2 の JSON パラメータの値を設定します。

<Parameters>
  <Parameter name="my_json_param_1" type="json" ref="flow_var_1">{name:"Apple", color:"Red"}</Parameter>
  <Parameter name="my_json_param_2" type="json">{name:"Banana", color:"Yellow"}</Parameter>
</Parameters>

この例では、flow_var_1 フロー変数が正常に解決されると、my_json_param_1flow_var_1 フロー変数の値に設定されます。flow_var_1 が解決されなかった場合、my_json_param_1{name:"Apple", color:"Red"} に設定されます。ref 属性が指定されていないため、my_json_param_2 パラメータが {name:"Banana", color:"Yellow"} に設定されています。

例 5

次の例では、デフォルト テンプレートで渡されたフロー変数の値を使用して、template_json_param JSON パラメータの値を設定します。

  <Parameters>
    <Parameter name="template_json_param" type="json">{"name":"$#flow_var_1#$"}</Parameter>
</Parameters>
  

この例では、flow_var_1 フロー変数が正常に解決されると、template_json_paramflow_var_1 フロー変数の値に設定されます。flow_var_1 を解決できない場合、Apigee は例外をスローします。

例 6

次の例では、substitutionVariableChar 属性を使用して template_json_param JSON パラメータの値を設定しています。

<Parameters substitutionVariableChar="#">
    <Parameter name="template_json_param" type="json">{"name":"#flow_var_1#"}</Parameter>
</Parameters>
  

この例では、flow_var_1 フロー変数が正常に解決されると、template_json_paramflow_var_1 フロー変数の値に設定されます。flow_var_1 を解決できない場合、Apigee は例外をスローします。

次の表に、<Parameter> 要素の属性を示します。

属性 必須かどうか 種類 説明
name 必須 文字列 パラメータの名前。
type 必須 文字列 パラメータのデータ型。サポートされている型は integerstringbooleandoublejson です。
ref 省略可 文字列 Apigee がパラメータ値を読み取るフロー変数を指定します。Apigee は次の基準でパラメータ値を設定します。
  • ランタイム時にフロー変数が解決され、有効な場合、Apigee はフロー変数の値を使用します。
  • ランタイム時にフロー変数が解決され、無効な場合、Apgiee は例外を報告します。
  • 実行時にフロー変数が解決されない場合、Apigee は <Parameter> 要素の値を使用します。要素の値が無効な場合、Apigee はエラーを報告します。

<ParameterArray>

入力パラメータの配列を指定します。

デフォルト値 なし
必須かどうか 省略可
複合型
親要素 <Parameters>
子要素 <Value>

<Parameters> 要素内に複数の <ParameterArray> 要素を含めることができます。パラメータ配列には、実際の値を指定するか、ref 属性でフロー変数を指定することで、配列要素の値を設定できます。フロー変数を指定すると、配列要素がフロー変数の値に設定されます。このセクションの例では、<ParameterArray> 要素を構成するさまざまな方法について説明します。

<ParameterArray> 要素の構文は次のとおりです。

構文
<Parameters>
  <ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE" ref="FLOW_VARIABLE_NAME">
    <Value ref="FLOW_VARIABLE_NAME"/>
    <Value ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Value>
    <Value>PARAMETER_VALUE</Value>
  </ParameterArray>
  <ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE" ref="FLOW_VARIABLE_NAME"/>
  <ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE">
    <Value ref="FLOW_VARIABLE_NAME"/>
    <Value ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Value>
    <Value>PARAMETER_VALUE</Value>
  </ParameterArray>
<Parameters/>
例 1

次の例では、my_array_param を整数配列として宣言し、配列要素の値を 123 に設定します。

<Parameters>
  <ParameterArray name="my_array_param" type="integer">
    <Value>1</Value>
    <Value>2</Value>
    <Value>3</Value>
  </ParameterArray>
<Parameters/>
例 2

次の例では、my_array_param を double 配列として宣言しています。

  • 最初の要素は、flow_var_1 フロー変数の値に設定されます。
  • 2 番目の要素は 3.0 に設定されます。
<Parameters>
  <ParameterArray name="my_array_param" type="double">
    <Value ref="flow_var_1"/>
    <Value>3.0</Value>
  </ParameterArray>
<Parameters/>
例 3

次の例では、my_array_param をブール値配列として宣言し、flow_var_1 フロー変数の値に設定します。

<Parameters>
  <ParameterArray name="my_array_param" type="boolean" ref="flow_var_1">
    <Value>true</Value>
    <Value>false</Value>
    <Value>false</Value>
  </ParameterArray>
<Parameters/>

この例では、flow_var_1 が正常に解決されると、my_array_paramflow_var_1 配列の値に設定されます。flow_var_1 が解決されなかった場合、my_array_param 配列は Value 要素の値に設定されます。

例 4

次の例では、my_array_param を JSON 配列として宣言し、flow_var_1 フロー変数の値に設定します。

<Parameters>
  <ParameterArray name="my_array_param" type="json" ref="flow_var_1"/>
<Parameters/>

この例では、flow_var_1 が正常に解決されると、my_array_paramflow_var_1 配列の値に設定されます。ただし、flow_var_1 を解決できない場合、Apigee は例外をスローします。

例 5

次の例では、my_array_param を文字列配列として宣言し、flow_var_1 フロー変数の値に設定します。

<Parameters>
  <ParameterArray name="my_array_param" type="string" ref="flow_var_1">
    <Value ref="flow_var_2"/>
    <Value>test_string</Value>
  </ParameterArray>
<Parameters/>

この例では、flow_var_1 が正常に解決されると、my_array_paramflow_var_1 配列の値に設定されます。flow_var_1 が解決されなかった場合にのみ、my_array_param<Value> 要素で指定された値に設定されます。

次の表に、<ParameterArray> 要素の属性を示します。

属性 必須かどうか 種類 説明
name 必須 文字列 パラメータ配列の名前。
type 必須 文字列 パラメータ配列のデータ型。サポートされている型は、integerstringbooleandouble です。
ref 省略可 文字列 Apigee が配列値を読み取るフロー変数を指定します。Apigee は次の基準でパラメータ値を設定します。
  • ランタイム時にフロー変数が解決され、有効な場合、Apigee はフロー変数の値を使用します。
  • ランタイム時にフロー変数が解決され、無効な場合、Apgiee は例外を報告します。
  • ランタイム時にフロー変数が解決されない場合、Apigee は <Value> 要素で指定された値を使用します。
<Value>

配列要素の値を指定します。

デフォルト値 なし
必須かどうか 省略可
文字列
親要素 <ParameterArray>
子要素 なし

配列の各要素は、個別の <Value> 要素にする必要があります。この値は次の方法で指定できます。

  • <Value>val</Value>: 要素の値として val を使用します。val が無効な場合、Apigee は例外を報告します。
  • <Value ref="refval"/>: ランタイム時に refval フロー変数を解決し、その値を使用します。解決された refval の値が無効か、refval が解決されない場合、Apigee は例外を報告します。
  • <Value ref="refval">val</Value>: 実行時に refval フロー変数を解決し、その値を使用します。解決された refval の値が無効である場合、Apigee は例外を報告します。refval が解決されない場合、Apigee は val を要素の値として使用します。
  • <Value>val1 $#flowval#$</Value>: $#FLOW_VARIABLE_NAME#$ を使用して、フロー変数の値を [Value] のテンプレート引数として渡します。Apigee は実行時に flowval フロー変数を解決し、その値を使用します。解決された flowval 値が無効な場合は、例外が報告されます。

<Value> 要素の構文は次のとおりです。

構文
<ParameterArray name="ARRAY_NAME" type="ARRAY_DATATYPE" ref="FLOW_VARIABLE_NAME">
  <Value>PARAMETER_VALUE</Value>
  <Value ref="FLOW_VARIABLE_NAME"/>
  <Value ref="FLOW_VARIABLE_NAME">PARAMETER_VALUE</Value>
</ParameterArray>
例 1

次の例では、値が 123 の整数パラメータ配列として my_array_param を宣言しています。

<ParameterArray name="my_array_param" type="integer">
  <Value>1</Value>
  <Value>2</Value>
  <Value>3</Value>
</ParameterArray>
例 2

次の例では、flow_var_1flow_var_2 のフロー変数の値の文字列パラメータ配列として my_array_param を宣言しています。

<ParameterArray name="my_array_param" type="string">
  <Value ref="flow_var_1"/>
  <Value ref="flow_var_2"/>
</ParameterArray>
例 3

次の例では、my_array_param を文字列パラメータ配列として宣言しています。

<ParameterArray name="my_array_param" type="string">
   <Value ref="flow_var_1">string_1</Value>
   <Value ref="flow_var_2">string_2</Value>
</ParameterArray>

この例では、フロー変数が正常に解決されると、配列要素の値が flow_var_1 フロー変数の値に設定されます。ただし、flow_var_1 を解決できない場合、配列要素の値は string_1 に設定されます。

例 4

次の例では、テンプレートで渡されたフロー変数の値を使用して、template_strArray_param 文字列配列パラメータの値を設定します。

  <Parameters>
    <ParameterArray name="template_strArray_param" type="string">
    <Value>apple $#flow_var_1#$</Value>
    </ParameterArray>
  </Parameters>
  

この例では、フロー変数が正常に解決されると、配列要素の値が flow_var_1 フロー変数の値に設定されます。flow_var_1 を解決できない場合、Apigee は例外をスローします。

次の表に、<Value> 要素の属性を示します。

属性 必須かどうか 種類 説明
ref 省略可 文字列 Apigee がパラメータ値を読み取るフロー変数を指定します。Apigee は次の基準でパラメータ値を設定します。
  • ランタイム時にフロー変数が解決され、有効な場合、Apigee はフロー変数の値を使用します。
  • ランタイム時にフロー変数が解決され、無効な場合、Apgiee は例外を報告します。
  • フロー変数が実行時に解決されない場合、Apigee は <Value> 要素の値を使用します。要素の値が無効な場合、Apigee はエラーを報告します。

<Request>

リクエストを保存するフロー変数の名前を指定します。

ポリシーを実行すると、新しいリクエスト メッセージ オブジェクトが作成され、リクエストを読み取るためにクエリを実行できる FLOW_VARIABLE_NAME 変数にそのオブジェクトが保存されます。

フロー変数名を指定しない場合、ポリシーはリクエスト メッセージにリクエストを保存します。存在する場合は、既存のリクエスト メッセージをオーバーライドします。

デフォルト値 リクエスト
必須かどうか 省略可
文字列
親要素 <SetIntegrationRequest>
子要素 なし

<Request> 要素の構文は次のとおりです。

構文

<Request>FLOW_VARIABLE_NAME</Request>

次の例では、リクエスト オブジェクトを my_request_var フロー変数に保存します。

<Request>my_request_var</Request>

エラーコード

このセクションでは、このポリシーでエラーがトリガーされたときに Apigee が設定する障害コード、エラー メッセージ、障害変数について説明します。これは、障害に対処する障害ルールを作成する場合に重要な情報です。詳細については、ポリシーエラーについて知っておくべきこと障害の処理をご覧ください。

ランタイム エラー

このエラーは、ポリシーの実行時に発生することがあります。

障害コード HTTP ステータス 原因
steps.setintegrationrequest.EmptyParameterArray 500

このエラーは、<ParameterArray> 要素に name 属性と type 属性があり、ref 属性または <Value> 要素がない場合に発生します。

steps.setintegrationrequest.EmptyParameterArrayValue 500

このエラーは、<Value> 要素が空で、ref 属性が設定されていない場合に発生します。

steps.setintegrationrequest.InvalidResolvedFlowVariable 500

このエラーは、要素の ref 属性で指定されたフロー変数が有効な値に解決できない場合に発生します。

  • ProjectIdIntegrationNameApiTrigger 要素の場合、フロー変数が null、空の文字列、または無効なデータ型に解決されると、このエラーが発生します。

    これらの要素の有効な値は次のとおりです。

    • ProjectId: 始める前にのセクションで Project ID の命名要件をご覧ください。
    • IntegrationName: IntegrationName 要素の命名要件をご覧ください。
    • ApiTrigger: 名前は api_trigger/ で始める必要があります。
  • ParameterArray 要素の場合、フロー変数が空の文字列に解決されると、このエラーが発生します。
steps.setintegrationrequest.MismatchedTypeAndResolvedRef 500

このエラーは、<Parameter> 要素の ref 属性で指定されたフロー変数が解決されたものの、フロー変数のデータ型が type 属性で指定されたデータ型と一致しない場合に発生します。

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArray 500

このエラーは、<ParameterArray> 要素の ref 属性で指定されたフロー変数が解決されたものの、フロー変数のデータ型が type 属性で指定されたデータ型と一致しない場合に発生します。

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArrayValue 500

このエラーは、<Value> 要素の ref 属性で指定されたフロー変数が解決されたものの、フロー変数のデータ型が親要素(<ParameterArray>)の type 属性で指定されたデータ型と一致しない場合に発生します。

steps.setintegrationrequest.RequestVariableNotMessageType 500 このエラーは、Request 要素で指定されたフロー変数がメッセージ型でない場合に発生します。
steps.setintegrationrequest.RequestVariableNotRequestMessageType 500 このエラーは、Request 要素で指定されたフロー変数がリクエスト メッセージ型でない場合に発生します。
steps.setintegrationrequest.UnresolvedVariable 500

このエラーは、Apigee が <Parameter><ParameterArray>、または <Value> 要素で指定されたフロー変数を解決できない場合に発生します。

障害変数

ポリシーで実行エラーが発生すると、Apigee によってエラー メッセージが生成されます。これらのエラー メッセージはエラー レスポンスで確認できます。多くの場合、システムによって生成されたエラー メッセージは、製品のコンテキストとは関係ありません。エラーのタイプに基づいてエラー メッセージをカスタマイズして、より有用なメッセージにすることができます。

エラー メッセージをカスタマイズするには、障害ルールまたは RaiseFault ポリシーを使用します。障害ルールと RaiseFault ポリシーの違いについては、FaultRule ポリシーと RaiseFault ポリシーをご覧ください。障害ルールと RaiseFault ポリシーの両方で Condition 要素を使用して条件を確認する必要があります。Apigee では、各ポリシーに固有の障害変数が用意されています。障害変数の値は、ポリシーがランタイム エラーをトリガーするときに設定されます。これらの変数を使用することで、特定のエラー条件を確認し、適切なアクションを実行できます。エラー条件の確認について詳しくは、条件の作成をご覧ください。

次の表に、このポリシーに固有の障害変数を示します。

変数 説明
fault.name fault.name は、ランタイム エラーの表にある障害のいずれかに一致します。障害名は、障害コードの最後の部分です。 fault.name Matches "UnresolvedVariable"
SetIntegrationRequest.POLICY_NAME.failed POLICY_NAME は、障害が発生したポリシーのユーザー指定の名前です。 SetIntegrationRequest.set-integration-request-1.failed = true
ポリシーエラーの詳細については、ポリシーエラーについて知っておくべきことをご覧ください。

関連トピック

Application Integration 機能の詳細については、Application Integration の概要をご覧ください。