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>

エラーコード

This section describes the fault codes, error messages, and the fault variables set by Apigee when this policy triggers an error. This information is essential if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.setintegrationrequest.EmptyParameterArray 500

This error occurs when the <ParameterArray> element has the name and type attributes, but doesn't have the ref attribute or a <Value> element.

steps.setintegrationrequest.EmptyParameterArrayValue 500

This error occurs when the <Value> element is empty and the ref attribute is not set.

steps.setintegrationrequest.InvalidResolvedFlowVariable 500

This error occurs when the flow variable specified in the ref attribute of an element fails to resolve to a valid value.

  • For the ProjectId, IntegrationName, or the ApiTrigger elements, this error occurs if the flow variable resolves to a null, an empty string, or an invalid data type.

    A valid value for these elements is as follows:

    • ProjectId: See the naming requirements for Project ID in the Before you begin section.
    • IntegrationName: See the naming requirements for the IntegrationName element.
    • ApiTrigger: The name should start with api_trigger/.
  • For the ParameterArray element, this error occurs if the flow variable resolves to an empty string.
steps.setintegrationrequest.MismatchedTypeAndResolvedRef 500

This error occurs when the flow variable specified in the ref attribute of the <Parameter> element resolves, but the flow variable value's data type doesn't match the data type specified in the type attribute.

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArray 500

This error occurs when the flow variable specified in the ref attribute of the <ParameterArray> element resolves, but the flow variable value's data type doesn't match with the data type specified in the type attribute.

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArrayValue 500

This error occurs when the flow variable specified in the ref attribute of the <Value> element resolves, but the flow variable value's data type doesn't match with the data type specified in the type attribute of its parent element (<ParameterArray>).

steps.setintegrationrequest.RequestVariableNotMessageType 500 This error occurs when the flow variable specified by the Request element is not of message type.
steps.setintegrationrequest.RequestVariableNotRequestMessageType 500 This error occurs when the flow variable specified by the Request element is not of Request message type.
steps.setintegrationrequest.UnresolvedVariable 500

This error occurs when Apigee can't resolve the flow variables specified in the <Parameter>, <ParameterArray>, or the <Value> elements.

Fault variables

Whenever there are execution errors in a policy, Apigee generates error messages. You can view these error messages in the error response. Many a time, system generated error messages might not be relevant in the context of your product. You might want to customize the error messages based on the type of error to make the messages more meaningful.

To customize the error messages, you can use either fault rules or the RaiseFault policy. For information about differences between fault rules and the RaiseFault policy, see FaultRules vs. the RaiseFault policy. You must check for conditions using the Condition element in both the fault rules and the RaiseFault policy. Apigee provides fault variables unique to each policy and the values of the fault variables are set when a policy triggers runtime errors. By using these variables, you can check for specific error conditions and take appropriate actions. For more information about checking error conditions, see Building conditions.

The following table describes the fault variables specific to this policy.

Variables Where Example
fault.name The fault.name can match to any of the faults listed in the Runtime errors table. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
SetIntegrationRequest.POLICY_NAME.failed POLICY_NAME is the user-specified name of the policy that threw the fault. SetIntegrationRequest.set-integration-request-1.failed = true
For more information about policy errors, see What you need to know about policy errors.

関連トピック

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