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>

This element has the following attributes that are common to all policies:

Attribute Default Required? Description
name N/A Required

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

continueOnError false Optional Set to false to return an error when a policy fails. This is expected behavior for most policies. Set to true to have flow execution continue even after a policy fails. See also:
enabled true Optional Set to true to enforce the policy. Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.
async   false Deprecated This attribute is deprecated.

子要素のリファレンス

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

<DisplayName>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value N/A
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used.
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

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

Example

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

The <DisplayName> element has no attributes or child elements.

<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 の概要をご覧ください。