Política SetIntegrationRequest

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

ícono de política

Descripción general

La política SetIntegrationRequest te permite crear un objeto de solicitud para una integración que desees ejecutar. En la política, debes configurar los detalles del activador de la API y los parámetros de entrada necesarios para ejecutar la integración. Cuando ejecutas la política SetIntegrationRequest, esta crea un objeto de solicitud y lo guarda en una variable de flujo. El objeto de solicitud tiene toda la información necesaria para ejecutar la integración. En esta etapa, la integración aún no se ejecuta. Para ejecutar la integración, debes llamar a la política IntegrationCallout o configurar un IntegrationEndpoint. Tanto la política IntegrationCallout como la IntegrationEndpoint requieren el objeto de solicitud para poder ejecutar la integración.

Esta política es una política extensible, y el uso de esta política puede tener implicaciones de costo o uso, según tu licencia de Apigee. Para obtener información sobre los tipos de políticas y sus implicaciones de uso, consulta Tipos de políticas.

<SetIntegrationRequest>

Especifica la política SetIntegrationRequest.

Valor predeterminado N/A
¿Es obligatorio? Obligatorio
Tipo Tipo complejo
Elemento principal N/A
Elementos secundarios <ApiTrigger>
<DisplayName>
<IntegrationName>
<IntegrationRegion>
<Parameters>
<ProjectId>
<Request>
<ScheduleTime>

En la siguiente tabla, se proporciona una descripción de alto nivel de los elementos secundarios del elemento <SetIntegrationRequest>:

Elemento secundario ¿Es obligatorio? Descripción
<ApiTrigger> Obligatorio Nombre del activador de API al que se llamará en la integración
<DisplayName> Opcional Un nombre personalizado para la política
<IntegrationName> Opcional Nombre de la integración que se ejecutará
<IntegrationRegion> Obligatorio Nombre de la región en la que existe la integración.
<Parameters> Opcional Parámetros de entrada de la integración
<ProjectId> Opcional Nombre del proyecto de Google Cloud que tiene la integración que deseas ejecutar.
<Request> Opcional Nombre de la variable de flujo para guardar el objeto de solicitud.
<ScheduleTime> Opcional La hora en la que se debe ejecutar la integración

La política SetIntegrationRequest usa la siguiente sintaxis:

Sintaxis

<?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>

Ejemplo

En el siguiente ejemplo, se muestra la definición de la política 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.

Referencia del elemento secundario

En esta sección, se describen los elementos secundarios de <SetIntegrationRequest>.

<DisplayName>

Se usan además del atributo name para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

El elemento <DisplayName> es común a todas las políticas.

Valor predeterminado N/A
¿Es obligatorio? Opcional. Si omites <DisplayName>, se usa el valor del atributo name de la política.
Tipo String
Elemento principal <PolicyElement>
Elementos secundarios Ninguno

El elemento <DisplayName> usa la siguiente sintaxis:

Sintaxis

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

Ejemplo

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

El elemento <DisplayName> no tiene atributos ni elementos secundarios.

<ProjectId>

Especifica el nombre del proyecto de Google Cloud.

Apigee asigna el valor que especificas para este elemento a la variable de flujo integration.project.id.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <ProjectId> usa la siguiente sintaxis:

Sintaxis

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

Ejemplo

En el siguiente ejemplo, se configura la política para que use la variable de flujo my_projectid_var a fin de recuperar el ID del proyecto y, si la variable de flujo no se resuelve en el entorno de ejecución, usa apigee_staging_1 como ID del proyecto:

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

En la siguiente tabla, se describen los atributos de <ProjectId>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer el ID del proyecto de Google Cloud. Puedes configurar el elemento <ProjectId> de una de las siguientes maneras:
  • <ProjectId>val</ProjectId>: Usa val como el ID del proyecto.
  • <ProjectId ref="refval"/>: Resuelve refval de forma dinámica para determinar el ID del proyecto. Apigee informa una excepción si el ID del proyecto resuelto no es válido o si no se resuelve refval.
  • <ProjectId ref="refval">val</ProjectId>: Resuelve refval de forma dinámica para determinar el ID del proyecto. Apigee informa una excepción si el ID del proyecto resuelto no es válido. Si refval no se resuelve, usa val como ID del proyecto.

<IntegrationName>

Especifica la integración que se ejecutará.

Apigee asigna el valor que especificas para este elemento a la variable de flujo integration.name.

El nombre de la integración debe cumplir con los siguientes requisitos de denominación:

  • Deben comenzar y terminar con letras o números.
  • No pueden tener espacios.
  • No pueden tener dos caracteres consecutivos o guiones bajos.
Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <IntegrationName> usa la siguiente sintaxis:

Sintaxis

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

Ejemplo

En el siguiente ejemplo, se configura la política para usar la variable de flujo my_integration_ref a fin de recuperar el nombre de la integración y, si la variable de flujo no se resuelve en el entorno de ejecución, usa integration_1 como el nombre de la integración:

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

En la siguiente tabla, se describen los atributos de <IntegrationName>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer el nombre de la integración. Puedes configurar el elemento <IntegrationName> de una de las siguientes maneras:
  • <IntegrationName>val</IntegrationName>: Usa val como el nombre de la integración.
  • <IntegrationName ref="refval"/>: Resuelve refval de forma dinámica para determinar el nombre de la integración. Apigee informa una excepción si el nombre de la integración resuelto no es válido o si no se resuelve refval.
  • <IntegrationName ref="refval">val</IntegrationName>: Resuelve refval de forma dinámica para determinar el nombre de la integración. Apigee informa una excepción si el nombre de la integración resuelto no es válido. Si refval no se resuelve, usa val como nombre de la integración.

<IntegrationRegion>

Especifica la región en la que existe la integración.

En el entorno de ejecución, Apigee asigna el valor del elemento a la variable de flujo integration.region, crea una URL de destino basada en la región y almacena la URL en la variable de flujo integration.target.url.

La URL de destino basada en la región tiene el siguiente formato: https://integration.region-integrations.googleapis.com

La región de integración debe ser compatible con Application Integration. Para obtener más información sobre las regiones compatibles de Application Integration, consulta Regiones admitidas.

Valor predeterminado N/A
¿Es obligatorio? Obligatorio
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <IntegrationRegion> usa la siguiente sintaxis:

Sintaxis

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

Ejemplo

En el siguiente ejemplo, se configura la política para usar la variable de flujo my_integration_region_ref a fin de recuperar la región de integración y, si la variable de flujo no se resuelve en el entorno de ejecución, se usa asia-east1 como la región de la integración:

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

En la siguiente tabla, se describen los atributos de <IntegrationRegion>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer la región de la integración. Puedes configurar el elemento <IntegrationRegion> de una de las siguientes maneras:
  • <IntegrationRegion>val</IntegrationRegion>: Usa val como la región de integración.
  • <IntegrationRegion ref="refval"/>: Resuelve refval de forma dinámica para determinar la región de la integración. Apigee informa una excepción si la región de la integración resuelto no es válido o si no se resuelve refval.
  • <IntegrationRegion ref="refval">val</IntegrationRegion>: Resuelve refval de forma dinámica para determinar la región de la integración. Apigee informa una excepción si la región de la integración resuelto no es válido. Si refval no se resuelve, usa val como la región de integración.

<ApiTrigger>

Especifica el activador de API que se ejecutará.

Debes especificar el nombre del activador de la API en el formato api_trigger/API_TRIGGER_NAME.

Apigee asigna el valor que especificas para este elemento a la variable de flujo integration.api.trigger.

Si especificaste <IntegrationName>, solo se ejecuta el activador de API de esa integración. Sin embargo, si no especificaste <IntegrationName>, se ejecutan todas las integraciones que tienen el activador de API especificado.

Valor predeterminado N/A
¿Es obligatorio? Obligatorio
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <ApiTrigger> usa la siguiente sintaxis:

Sintaxis

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

Ejemplo

En el siguiente ejemplo, se configura la política para usar la variable de flujo my_api_trigger_ref a fin de recuperar el nombre del activador de la API y, si la variable de flujo no se resuelve en el entorno de ejecución, usa api_trigger/API-Trigger-2 como el nombre del activador de la API:

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

En la siguiente tabla, se describen los atributos de <ApiTrigger>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer el nombre del activador de la API. Puedes configurar el elemento <ApiTrigger> de una de las siguientes maneras:
  • <ApiTrigger>val</ApiTrigger>: Usa val como el nombre del activador de la API.
  • <ApiTrigger ref="refval"/>: Resuelve refval de forma dinámica para determinar el nombre del activador. Apigee informa una excepción si el nombre del activador de la API resuelto no es válido o si no se resuelve refval.
  • <ApiTrigger ref="refval">val</ApiTrigger>: Resuelve refval de forma dinámica para determinar el nombre del activador. Apigee informa una excepción si el nombre del activador de la API resuelto no es válido. Si refval no se resuelve, usa val como nombre del activador.

<ScheduleTime>

Especifica el momento en el que se debe ejecutar la integración.

Si la hora es menor o igual que la hora actual, la integración se ejecuta de inmediato. Debes especificar la hora en el formato yyyy-mm-ddThh:mm:ssZ, en el que Z es la zona horaria UTC. Por ejemplo, si especificas 2022-01-15T01:30:15Z, la integración se programa para ejecutarse el 15 de enero de 2022 a las 1:30:15 UTC. También puedes especificar la zona horaria mediante una compensación de UTC. Por ejemplo, si especificas 2022-01-15T01:30:15-08:00, la integración se programa para ejecutarse el 15 de enero de 2022 a las 1:30:15 PST. Para obtener más información sobre el formato de hora, consulta Representaciones de fechas y horas combinadas.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <ScheduleTime> usa la siguiente sintaxis:

Sintaxis

<ScheduleTime>PARAMETER_VALUE</ScheduleTime>

Ejemplo

En el siguiente ejemplo, se programa la integración para que se ejecute el 2022-01-15T01:30:15Z:

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

<Parameters>

Especifica los parámetros de entrada necesarios para ejecutar la integración.

Puedes especificar parámetros individuales o arrays de parámetros.

  • Para especificar un parámetro individual, usa el elemento <Parameter>.
  • Para especificar un array de parámetros, usa el elemento <ParameterArray>.
Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo Tipo complejo
Elemento principal <SetIntegrationRequest>
Elementos secundarios <Parameter>
<ParameterArray>

En la siguiente tabla, se describen los atributos de <Parameters>:

Atributo ¿Es obligatorio? Tipo Descripción
substitutionVariableChar Opcional Caracteres Te permite configurar delimitadores personalizados para pasar valores de variables de flujo como argumentos de plantilla en el elemento secundario <Parameter>.

El elemento <Parameters> usa la siguiente sintaxis:

Sintaxis

<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>

Ejemplo

En el siguiente ejemplo, se inicializa el parámetro my_str_param y el array de parámetros 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 trata los elementos <Parameter> y <ParameterArray> vacíos como valores null. Por ejemplo, las declaraciones como <Parameter></Parameter> y <ParameterArray></ParameterArray> se tratan como valores null.

<Parameter>

Especifica un parámetro de entrada.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo String
Elemento principal <Parameters>
Elementos secundarios Ninguno

Puedes especificar el valor del parámetro de las siguientes maneras:

  • <Parameter name="my_param" type="string">val</Parameter>: Usa val como valor del parámetro. Si val no es válido, Apigee informa una excepción.
  • <Parameter name="my_param" type="string" ref="refval"/>: Resuelve la variable de flujo refval en el entorno de ejecución y usa su valor. Apigee informa una excepción si el valor resuelto refval no es válido o si refval no está resuelto.
  • <Parameter name="my_param" type="string" ref="refval">val</Parameter>: Resuelve la variable de flujo refval en el entorno de ejecución y usa su valor. Apigee informa una excepción si el valor resuelto refval no es válido. Si refval no se resuelve, Apigee usa val como el valor del parámetro.
  • <Parameter name="my_param" type="json">{"name":"$#flowval#$"}</Parameter>: Usa $#FLOW_VARIABLE_NAME#$ para pasar los valores de las variables de flujo como argumento de plantilla en Parameter Apigee resuelve la variable de flujo flowval en el entorno de ejecución y usa su valor. Se informa una excepción si el valor de flowval resuelto no es válido.
  • <Parameter name="my_param" type="json">{"name":"SUBSTITUTION_CHAR Flowval SUBSTITUTION_CHAR"}</Parameter>: En el ejemplo anterior, SUBSTITUTION_CHAR denota Valor especificado para el atributo substitutionVariableChar del elemento superior <Parameters>. Apigee resuelve la variable de flujo flowval en el entorno de ejecución y usa su valor. Se informa una excepción si el valor de flowval resuelto no es válido.

El elemento <Parameter> usa la siguiente sintaxis:

Sintaxis
<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>
Ejemplo 1

En el siguiente ejemplo, se declara el parámetro my_str_param como una string y se establece el valor en someText.

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

En el siguiente ejemplo, se declara el parámetro my_double_param como un doble y se asigna el valor de la variable de flujo flow_var al parámetro.

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

En el siguiente ejemplo, se establece el valor como el parámetro de número entero my_int_param_1.

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

En este ejemplo, si la variable de flujo flow_var_1 se resuelve correctamente, my_int_param_1 se establece como el valor de la variable de flujo. Sin embargo, si flow_var_1 no se resuelve, my_int_param_1 se configura como 96.

Ejemplo 4

En el siguiente ejemplo, se establecen valores para los parámetros JSON my_json_param_1 y my_json_param_2.

<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>

En este ejemplo, si la variable de flujo flow_var_1 se resuelve correctamente, my_json_param_1 se establece en el valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, my_json_param_1 se configura como {name:"Apple", color:"Red"}. El parámetro my_json_param_2 se establece en {name:"Banana", color:"Yellow"}, ya que no hay ningún atributo ref especificado.

Ejemplo 5

En el siguiente ejemplo, se establece el valor del parámetro JSON template_json_param mediante el valor de la variable de flujo que se pasa en una plantilla predeterminada.

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

En este ejemplo, si la variable de flujo flow_var_1 se resuelve correctamente, template_json_param se establece en el valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, Apigee genera una excepción.

Ejemplo 6

En el siguiente ejemplo, se establece el valor del parámetro JSON template_json_param mediante el atributo substitutionVariableChar.

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

En este ejemplo, si la variable de flujo flow_var_1 se resuelve correctamente, template_json_param se establece en el valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, Apigee genera una excepción.

En la siguiente tabla, se describen los atributos de <Parameter>:

Atributo ¿Es obligatorio? Tipo Descripción
name Obligatorio String Nombre del parámetro
type Obligatorio String Tipo de datos del parámetro Los tipos admitidos son integer, string, boolean, double y json.
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer el valor del parámetro. Apigee usa los siguientes criterios para establecer el valor del parámetro:
  • Si la variable de flujo se resuelve en el entorno de ejecución y es válida, Apigee usa el valor de la variable de flujo.
  • Si la variable de flujo se resuelve en el entorno de ejecución, pero no es válida, Apigee informa una excepción.
  • Si la variable de flujo no se resuelve en el entorno de ejecución, Apigee usa el valor del elemento <Parameter>. Si el valor del elemento no es válido, Apigee informa un error.

<ParameterArray>

Especifica un array de parámetros de entrada.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo Tipo complejo
Elemento principal <Parameters>
Elementos secundarios <Value>

El elemento <Parameters> puede tener varios elementos <ParameterArray> dentro de él. Para un array de parámetros, puedes configurar el valor de los elementos del array mediante la especificación del valor real o con una variable de flujo en el atributo ref. Si especificas una variable de flujo, los elementos del array se establecen en el valor de la variable de flujo. En los ejemplos de esta sección, se describen las diversas formas en las que puedes configurar el elemento <ParameterArray>.

El elemento <ParameterArray> usa la siguiente sintaxis:

Sintaxis
<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/>
Ejemplo-1

En el siguiente ejemplo, se declara my_array_param como un array de números enteros y se establece el valor de los elementos del array como 1, 2 y 3:

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

En el siguiente ejemplo, se declara my_array_param como un array doble en el que ocurre lo siguiente:

  • El primer elemento se establece en el valor de la variable de flujo flow_var_1.
  • El segundo elemento se establece en 3.0.
<Parameters>
  <ParameterArray name="my_array_param" type="double">
    <Value ref="flow_var_1"/>
    <Value>3.0</Value>
  </ParameterArray>
<Parameters/>
Ejemplo-3

En el siguiente ejemplo, se declara my_array_param como un array booleano y se establece en el valor de la variable de flujo 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/>

En este ejemplo, si flow_var_1 se resuelve de forma correcta, my_array_param se configura con los valores del array flow_var_1. Sin embargo, si flow_var_1 no se resuelve, el array my_array_param se configura con los valores de los elementos Value.

Ejemplo-4

En el siguiente ejemplo, se declara my_array_param como un array JSON y se establece en el valor de la variable de flujo flow_var_1.

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

En este ejemplo, si flow_var_1 se resuelve de forma correcta, my_array_param se configura con los valores del array flow_var_1. Sin embargo, si flow_var_1 no se resuelve, Apigee informa una excepción.

Ejemplo-5

En el siguiente ejemplo, se declara my_array_param como un array de strings y se establece en los valores de la variable de flujo 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/>

En este ejemplo, si flow_var_1 se resuelve de forma correcta, my_array_param se configura con los valores del array flow_var_1. Solo si flow_var_1 no se resuelve, my_array_param se configura con los valores especificados en los elementos <Value>.

En la siguiente tabla, se describen los atributos de <ParameterArray>:

Atributo ¿Es obligatorio? Tipo Descripción
name Obligatorio String Nombre del array del parámetro
type Obligatorio String Tipo de datos del array del parámetro Los tipos admitidos son integer, string, boolean y double.
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer los valores del arreglo. Apigee usa los siguientes criterios para establecer el valor del parámetro:
  • Si la variable de flujo se resuelve en el entorno de ejecución y es válida, Apigee usa el valor de la variable de flujo.
  • Si la variable de flujo se resuelve en el entorno de ejecución, pero no es válida, Apigee informa una excepción.
  • Si la variable de flujo no se resuelve en el entorno de ejecución, Apigee usa los valores especificados en los elementos <Value>.
<Value>

Especifica el valor de un elemento de array.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo String
Elemento principal <ParameterArray>
Elementos secundarios Ninguno

Cada elemento del array debe ser un elemento <Value> independiente. Puedes especificar el valor de las siguientes maneras:

  • <Value>val</Value>: Usa val como valor del elemento. Si val no es válido, Apigee informa una excepción.
  • <Value ref="refval"/>: Resuelve la variable de flujo refval en el entorno de ejecución y usa su valor. Apigee informa una excepción si el valor resuelto refval no es válido o si refval no está resuelto.
  • <Value ref="refval">val</Value>: Resuelve la variable de flujo refval en el entorno de ejecución y usa su valor. Apigee informa una excepción si el valor resuelto refval no es válido. Si refval no se resuelve, Apigee usa val como el valor del elemento.
  • <Value>val1 $#flowval#$</Value>: Usa $#FLOW_VARIABLE_NAME#$ para pasar valores de variables de flujo como un argumento de plantilla en Value. Apigee resuelve la variable de flujo flowval en el entorno de ejecución y usa su valor. Se informa una excepción si el valor de flowval resuelto no es válido.

El elemento <Value> usa la siguiente sintaxis:

Sintaxis
<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>
Ejemplo 1

En el siguiente ejemplo, se declara my_array_param como un array de parámetros de número entero con los valores 1, 2 y 3:

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

En el siguiente ejemplo, se declara my_array_param como un array de parámetros de string con los valores de las variables de flujo flow_var_1 y flow_var_2:

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

En el siguiente ejemplo, se declara my_array_param como un array de parámetros de string:

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

En este ejemplo, si la variable de flujo se resuelve correctamente, el valor del elemento del array se establece en el valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, el valor del elemento del array se establece en string_1.

Ejemplo 4

En el siguiente ejemplo, se establece el valor para el parámetro del array de cadenas template_strArray_param mediante el valor de la variable de flujo que se pasa en una plantilla.

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

En este ejemplo, si la variable de flujo se resuelve correctamente, el valor del elemento del array se establece en el valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, Apigee arroja una excepción.

En la siguiente tabla, se describen los atributos de <Value>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional String Especifica la variable de flujo desde la que Apigee debe leer el valor del parámetro. Apigee usa los siguientes criterios para establecer el valor del parámetro:
  • Si la variable de flujo se resuelve en el entorno de ejecución y es válida, Apigee usa el valor de la variable de flujo.
  • Si la variable de flujo se resuelve en el entorno de ejecución, pero no es válida, Apigee informa una excepción.
  • Si la variable de flujo no se resuelve en el entorno de ejecución, Apigee usa el valor del elemento <Value>. Si el valor del elemento no es válido, Apigee informa un error.

<Request>

Especifica el nombre de la variable de flujo para guardar la solicitud.

Una vez que se ejecuta la política, se crea un objeto de mensaje de solicitud nuevo y se guarda el objeto en la variable FLOW_VARIABLE_NAME que puedes consultar para leer la solicitud.

Si no especificas un nombre de variable de flujo, la política guarda la solicitud en el mensaje de solicitud y anula el mensaje de solicitud existente si corresponde.

Valor predeterminado solicitud
¿Es obligatorio? Opcional
Tipo String
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <Request> usa la siguiente sintaxis:

Sintaxis

<Request>FLOW_VARIABLE_NAME</Request>

Ejemplo

En el siguiente ejemplo, se guarda el objeto de solicitud en la variable de flujo my_request_var:

<Request>my_request_var</Request>

Códigos de error

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.

Temas relacionados

Si deseas obtener más información sobre la función de Application Integration, consulta la descripción general de Application Integration.