本页面适用于 Apigee 和 Apigee Hybrid。
查看 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 |
无 | 必需 |
政策的内部名称。 (可选)使用 |
continueOnError |
否 | 可选 | 设置为 false 可在政策失败时返回错误。这是大多数政策的预期行为。设置为 true ,即使在政策失败后,仍可以继续执行流。另请参阅:
|
enabled |
true | 可选 | 设置为 true 可实施政策。 设为 false 可关闭政策。即使政策仍附加到某个流,也不会强制执行该政策。 |
async |
否 | 已弃用 | 此属性已弃用。 |
子元素参考
本部分介绍<SetIntegrationRequest>
的子元素。
<DisplayName>
除了用于 name
属性之外,还可用于在管理界面代理编辑器中使用其他更加自然的名称标记政策。
<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> 元素:
|
<IntegrationName>
指定要运行的集成。
Apigee 会将您为此元素指定的值分配给 integration.name
流变量。
集成名称必须符合以下命名要求:
- 必须以字母或数字开头和结尾。
- 不能包含空格。
- 不能包含两个连续的短划线或下划线字符。
默认值 | 不适用 |
是否必需? | 可选 |
类型 | 字符串 |
父元素 |
<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> 元素:
|
<IntegrationRegion>
指定存在集成的区域。
在运行时,Apigee 会将该元素的值分配给 integration.region
流变量,创建基于区域的目标网址,并将网址存储在 integration.target.url
流变量中。
基于区域的目标网址采用以下格式:https://integration.region-integrations.googleapis.com
Apigee 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> 元素:
|
<ApiTrigger>
指定要运行的 API 触发器。
您必须按 api_trigger/API_TRIGGER_NAME
格式指定 API 触发器名称。
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> 元素:
|
<ScheduleTime>
指定集成必须运行的时间。
如果时间早于或等于当前时间,则集成会立即运行。您必须以 yyyy-mm-ddThh:mm:ssZ
格式指定时间,其中 Z 是 UTC 时区。例如,如果您指定 2022-01-15T01:30:15Z
,则集成安排在世界协调时间 (UTC) 2022 年 1 月 15 日 1 点 30 分 15 秒运行。您还可以使用与世界协调时间 (UTC) 有所偏差的其他标准时来指定时区。例如,如果您指定 2022-01-15T01:30:15-08:00
,则集成安排在太平洋标准时间 2022 年 1 月 15 日 1 点 30 分 15 秒运行。如需详细了解时间格式,请参阅日期和时间的组合表示法。
默认值 | 不适用 |
是否必需? | 可选 |
类型 | 字符串 |
父元素 |
<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 |
可选 | Char | 允许您设置自定义分隔符,以将流变量值作为 <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#$
将流变量值作为 Parameter 中的模板参数。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
参数声明为双精度型参数,并将 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_1
设置为 96
。
示例 4
以下示例设置 my_json_param_1
和 my_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_1
设置为 flow_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_param
设置为 flow_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_param
设置为 flow_var_1
流变量的值。但是,如果 flow_var_1
无法解析,则 Apigee 会抛出异常。
下表介绍 <Parameter>
的特性:
属性 | 是否必需? | 类型 | 说明 |
---|---|---|---|
name |
必需 | 字符串 | 参数的名称。 |
type |
必需 | 字符串 | 参数的数据类型。支持的类型包括 integer 、string 、boolean 、double 和 json 。 |
ref |
可选 | 字符串 | 指定 Apigee 应从中读取参数值的流变量。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/>
Example-1
以下示例将 my_array_param
声明为整数数组,并将数组元素的值设置为 1
、2
和 3
:
<Parameters> <ParameterArray name="my_array_param" type="integer"> <Value>1</Value> <Value>2</Value> <Value>3</Value> </ParameterArray> <Parameters/>
Example-2
以下示例将 my_array_param
声明为双精度型数组,其中:
- 第一个元素设置为
flow_var_1
流变量的值。 - 第二个元素设置为
3.0
。
<Parameters> <ParameterArray name="my_array_param" type="double"> <Value ref="flow_var_1"/> <Value>3.0</Value> </ParameterArray> <Parameters/>
Example-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_param
会设置为 flow_var_1
数组的值。但是,如果 flow_var_1
无法解析,则 my_array_param
数组将设置为 Value
元素的值。
Example-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_param
会设置为 flow_var_1
数组的值。但是,如果 flow_var_1
无法解析,则 Apigee 会报告异常。
Example-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_param
会设置为 flow_var_1
数组的值。仅当 flow_var_1
无法解析时,my_array_param
才会设置为 <Value>
元素中指定的值。
下表介绍 <ParameterArray>
的特性:
属性 | 是否必需? | 类型 | 说明 |
---|---|---|---|
name |
必需 | 字符串 | 参数数组的名称。 |
type |
必需 | 字符串 | 参数数组的数据类型。支持的类型包括 integer 、string 、boolean 和 double 。 |
ref |
可选 | 字符串 | 指定 Apigee 应从中读取数组值的流变量。Apigee 使用以下条件来设置参数值:
|
<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
以下示例将 my_array_param
声明成值为 1
、2
和 3
的整数参数数组:
<ParameterArray name="my_array_param" type="integer"> <Value>1</Value> <Value>2</Value> <Value>3</Value> </ParameterArray>
示例 2
以下示例将 my_array_param
声明成值为 flow_var_1
和 flow_var_2
流变量的字符串参数数组:
<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 使用以下条件来设置参数值:
|
<Request>
指定用于保存请求的流变量名称。
政策执行后,会创建一个新的请求消息对象,并将该对象保存在 FLOW_VARIABLE_NAME
变量中,您可以查询该变量来读取请求。
如果您未指定流变量名称,则政策会将请求保存在请求消息中,并覆盖现有请求消息(如果有)。
默认值 | request |
是否必需? | 可选 |
类型 | 字符串 |
父元素 |
<SetIntegrationRequest> |
子元素 | 无 |
<Request>
元素使用以下语法:
语法
<Request>FLOW_VARIABLE_NAME</Request>
示例
以下示例将请求对象保存在 my_request_var
流变量中:
<Request>my_request_var</Request>
错误代码
本部分介绍当此政策触发错误时的故障代码、错误消息以及由 Apigee 设置的故障变量。在您要开发故障规则来处理故障时,此信息非常重要。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
运行时错误
政策执行时可能会发生这些错误。
故障代码 | HTTP 状态 | 原因 |
---|---|---|
steps.setintegrationrequest.EmptyParameterArray |
500 |
当 |
steps.setintegrationrequest.EmptyParameterArrayValue |
500 |
当 |
steps.setintegrationrequest.InvalidResolvedFlowVariable |
500 |
当在元素的
|
steps.setintegrationrequest.MismatchedTypeAndResolvedRef |
500 |
如果在 |
steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArray |
500 |
当在 |
steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArrayValue |
500 |
当在 |
steps.setintegrationrequest.RequestVariableNotMessageType |
500 |
当 Request 元素指定的流变量不是消息类型时,会发生此错误。 |
steps.setintegrationrequest.RequestVariableNotRequestMessageType |
500 |
当 Request 元素指定的流变量不是请求消息类型时,会发生此错误。 |
steps.setintegrationrequest.UnresolvedVariable |
500 |
当 Apigee 无法解析在 |
故障变量
只要政策中存在执行错误,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 概览