Política

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

Consulta la documentación de Apigee Edge.

Icono de política

Información general

La política SetIntegrationRequest te permite crear un objeto de solicitud para una integración que quieras 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, se crea un objeto de solicitud y se guarda en una variable de flujo. El objeto de solicitud tiene toda la información necesaria para ejecutar la integración. En esta fase, la integración aún no se ha ejecutado. Para ejecutar la integración, debes llamar a la política IntegrationCallout o definir un IntegrationEndpoint. Tanto la política IntegrationCallout como IntegrationEndpoint requieren el objeto de solicitud para ejecutar la integración.

Esta política es una política extensible y su uso puede tener implicaciones en cuanto a costes o utilización, en función de tu licencia de Apigee. Para obtener información sobre los tipos de políticas y las 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 ofrece una descripción general de los elementos secundarios del elemento <SetIntegrationRequest>:

Elemento secundario ¿Es obligatorio? Descripción
<ApiTrigger> Obligatorio Nombre del activador de API que se va a llamar en la integración.
<DisplayName> Opcional Un nombre personalizado para la política.
<IntegrationName> Opcional Nombre de la integración que se va a ejecutar.
<IntegrationRegion> Obligatorio Nombre de la región en la que se encuentra 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 quieres ejecutar.
<Request> Opcional Nombre de la variable de flujo en la que se guardará el objeto de solicitud.
<ScheduleTime> Opcional La hora a la que se debe ejecutar la integración.

La política SetIntegrationRequest utiliza 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>

Este elemento tiene los siguientes atributos, que son comunes a todas las políticas:

Atributo Predeterminado ¿Es obligatorio? Descripción
name N/A Obligatorio

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

Opcionalmente, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la interfaz de gestión con un nombre diferente en lenguaje natural.

continueOnError falso Opcional Asigna el valor false para devolver un error cuando falle una política. Este es el comportamiento esperado de la mayoría de las políticas. Asigna el valor true para que la ejecución del flujo continúe incluso después de que falle una política. Consulta también:
enabled true Opcional Asigna el valor true para aplicar la política. Selecciona false para desactivar la política. La política no se aplicará aunque siga adjunta a un flujo.
async   falso Obsoleto Este atributo está obsoleto.

Referencia de elemento secundario

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

<DisplayName>

Se usa junto con el atributo name para etiquetar la política en el editor de proxy de la interfaz de usuario de gestión con un nombre diferente que suene más natural.

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

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

El elemento <DisplayName> utiliza 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 especifiques para este elemento a la variable de flujo integration.project.id.

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

El elemento <ProjectId> utiliza 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 usar la variable de flujo my_projectid_var para obtener el ID del proyecto. Si la variable de flujo no se resuelve en el tiempo de ejecución, se 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 Cadena Especifica la variable de flujo de la que Apigee debe leer el ID del proyecto de Google Cloud. Puede definir el elemento <ProjectId> de una de las siguientes formas:
  • <ProjectId>val</ProjectId>: usa val como ID de proyecto.
  • <ProjectId ref="refval"/>: resuelve refval dinámicamente para determinar el ID del proyecto. Apigee informa de una excepción si el ID de proyecto resuelto no es válido o si refval no se ha resuelto.
  • <ProjectId ref="refval">val</ProjectId>: resuelve refval de forma dinámica para determinar el ID de proyecto. Apigee informa de una excepción si el ID de proyecto resuelto no es válido. Si refval no se resuelve, usa val como ID de proyecto.

<IntegrationName>

Especifica la integración que se va a ejecutar.

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

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

  • Debe empezar y terminar con letras o números.
  • No puede contener espacios.
  • No puede contener dos guiones o guiones bajos consecutivos.
Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo Cadena
Elemento principal <SetIntegrationRequest>
Elementos secundarios Ninguno

El elemento <IntegrationName> utiliza 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 para obtener el nombre de la integración y, si la variable de flujo no se resuelve en el tiempo de ejecución, se usa integration_1 como 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 Cadena Especifica la variable de flujo de la que Apigee debe leer el nombre de la integración. Puede definir el elemento <IntegrationName> de una de las siguientes formas:
  • <IntegrationName>val</IntegrationName>: usa val como nombre de la integración.
  • <IntegrationName ref="refval"/>: resuelve refval dinámicamente para determinar el nombre de la integración. Apigee informa de una excepción si el nombre de la integración resuelto no es válido o si refval no se ha resuelto.
  • <IntegrationName ref="refval">val</IntegrationName>: resuelve refval de forma dinámica para determinar el nombre de la integración. Apigee informa de 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 integración.

<IntegrationRegion>

Especifica la región en la que se encuentra la integración.

En el tiempo 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

Application Integration debe admitir la región de integración. Para obtener información sobre las regiones admitidas de Application Integration, consulta Regiones admitidas.

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

El elemento <IntegrationRegion> utiliza 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 para obtener la región de la integración. Si la variable de flujo no se resuelve en el tiempo de ejecución, se usa asia-east1 como 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 Cadena Especifica la variable de flujo de la que Apigee debe leer la región de integración. Puede definir el elemento <IntegrationRegion> de una de las siguientes formas:
  • <IntegrationRegion>val</IntegrationRegion>: usa val como región de integración.
  • <IntegrationRegion ref="refval"/>: resuelve refval de forma dinámica para determinar la región de integración. Apigee informa de una excepción si la región de integración resuelta no es válida o si refval no se ha resuelto.
  • <IntegrationRegion ref="refval">val</IntegrationRegion>: resuelve refval de forma dinámica para determinar la región de integración. Apigee informa de una excepción si la región de integración resuelta no es válida. Si refval no se resuelve, usa val como región de integración.

<ApiTrigger>

Especifica el activador de API que se va a ejecutar.

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

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

Si ha especificado el <IntegrationName>, solo se ejecutará el activador de la API de esa integración. Sin embargo, si no has especificado <IntegrationName>, se ejecutarán todas las integraciones que tengan el activador de API especificado.

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

El elemento <ApiTrigger> utiliza 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 para obtener el nombre del activador de la API. Si la variable de flujo no se resuelve en el tiempo de ejecución, se usa api_trigger/API-Trigger-2 como 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 Cadena Especifica la variable de flujo de la que Apigee debe leer el nombre del activador de la API. Puede definir el elemento <ApiTrigger> de una de las siguientes formas:
  • <ApiTrigger>val</ApiTrigger>: usa val como nombre del activador de API.
  • <ApiTrigger ref="refval"/>: se resuelve refval de forma dinámica para determinar el nombre del activador. Apigee informa de una excepción si el nombre del activador de la API resuelto no es válido o si refval no se ha resuelto.
  • <ApiTrigger ref="refval">val</ApiTrigger>: se resuelve refval de forma dinámica para determinar el nombre del activador. Apigee informa de 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 la hora a la que se debe ejecutar la integración.

Si la hora es anterior o igual a la hora actual, la integración se ejecuta inmediatamente. Debe especificar la hora en el formato yyyy-mm-ddThh:mm:ssZ, donde Z es la zona horaria UTC. Por ejemplo, si especifica 2022-01-15T01:30:15Z, la integración se programará para que se ejecute el 15 de enero del 2022 a las 1:30:15 (UTC). También puedes especificar la zona horaria mediante un desfase con respecto a UTC. Por ejemplo, si especifica 2022-01-15T01:30:15-08:00, la integración se programará para ejecutarse el 15 de enero del 2022 a las 1:30:15 (PST). Para obtener más información sobre el formato de hora, consulta Representaciones combinadas de fecha y hora.

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

El elemento <ScheduleTime> utiliza la siguiente sintaxis:

Sintaxis

<ScheduleTime>PARAMETER_VALUE</ScheduleTime>

Ejemplo

En el siguiente ejemplo se programa la integración para que se ejecute a las 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.

Puede especificar parámetros concretos o matrices de parámetros.

  • Para especificar un parámetro concreto, use el elemento <Parameter>.
  • Para especificar una matriz 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 Char Permite definir delimitadores personalizados para transferir valores de variables de flujo como argumentos de plantilla en el elemento secundario <Parameter>.

El elemento <Parameters> utiliza 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 inicializan 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 Cadena
Elemento principal <Parameters>
Elementos secundarios Ninguno

Puede especificar el valor del parámetro de las siguientes formas:

  • <Parameter name="my_param" type="string">val</Parameter>: usa val como valor del parámetro. Si val no es válido, Apigee informa de una excepción.
  • <Parameter name="my_param" type="string" ref="refval"/>: resuelve la variable de flujo refval en tiempo de ejecución y usa su valor. Apigee informa de una excepción si el valor refval resuelto no es válido o si refval no se ha resuelto.
  • <Parameter name="my_param" type="string" ref="refval">val</Parameter>: resuelve la variable de flujo refval en el tiempo de ejecución y usa su valor. Apigee informa de una excepción si el valor refval resuelto no es válido. Si refval no se resuelve, Apigee usa val como valor del parámetro.
  • <Parameter name="my_param" type="json">{"name":"$#flowval#$"}</Parameter>: usa $#FLOW_VARIABLE_NAME#$ para transferir valores de variables de flujo como argumento de plantilla en Parameter. Apigee resuelve la variable de flujo flowval en el tiempo de ejecución y usa su valor. Se informa de una excepción si el valor flowval resuelto no es válido.
  • <Parameter name="my_param" type="json">{"name":"SUBSTITUTION_CHAR flowval SUBSTITUTION_CHAR"}</Parameter>: SUBSTITUTION_CHAR indica el valor especificado para el atributo substitutionVariableChar del elemento principal <Parameters>. Apigee resuelve la variable de flujo flowval en el tiempo de ejecución y usa su valor. Se informa de una excepción si el valor flowval resuelto no es válido.

El elemento <Parameter> utiliza 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 cadena y se le asigna el valor 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 valor 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 asigna un valor al parámetro 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 asigna al valor de la variable de flujo. Sin embargo, si flow_var_1 no se resuelve, my_int_param_1 se asigna a 96.

Ejemplo 4

En el siguiente ejemplo se asignan valores a 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 asigna al valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, my_json_param_1 se asigna a {name:"Apple", color:"Red"}. El parámetro my_json_param_2 se define como {name:"Banana", color:"Yellow"}, ya que no se ha especificado ningún atributo ref.

Ejemplo 5

En el siguiente ejemplo se define el valor del parámetro JSON template_json_param mediante el valor de la variable de flujo que se ha transferido en la 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 asigna al 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 asigna 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 asigna al 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 Cadena Nombre del parámetro.
type Obligatorio Cadena Tipo de datos del parámetro. Los tipos admitidos son integer, string, boolean, double y json.
ref Opcional Cadena Especifica la variable de flujo de la que Apigee debe leer el valor del parámetro. Apigee usa los siguientes criterios para definir el valor del parámetro:
  • Si la variable de flujo se resuelve en el tiempo 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 tiempo de ejecución, pero no es válida, Apigee informa de una excepción.
  • Si la variable de flujo no se resuelve en el tiempo de ejecución, Apigee usa el valor del elemento <Parameter>. Si el valor del elemento no es válido, Apigee informa de un error.

<ParameterArray>

Especifica una matriz 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>. En el caso de una matriz de parámetros, puede definir el valor de los elementos de la matriz especificando el valor real o especificando una variable de flujo en el atributo ref. Si especifica una variable de flujo, los elementos de la matriz se asignan al valor de la variable de flujo. En los ejemplos de esta sección se describen las distintas formas de configurar el elemento <ParameterArray>.

El elemento <ParameterArray> utiliza 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/>
Example-1

En el siguiente ejemplo se declara my_array_param como una matriz de números enteros y se asignan los valores 1, 2 y 3 a los elementos de la matriz:

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

En el siguiente ejemplo se declara my_array_param como un array doble:

  • El primer elemento se asigna al valor de la variable de flujo flow_var_1.
  • El segundo elemento se ha definido como 3.0.
<Parameters>
  <ParameterArray name="my_array_param" type="double">
    <Value ref="flow_var_1"/>
    <Value>3.0</Value>
  </ParameterArray>
<Parameters/>
Example-3

En el siguiente ejemplo, se declara my_array_param como una matriz booleana y se le asigna 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 correctamente, my_array_param se asigna a los valores de la matriz flow_var_1. Sin embargo, si flow_var_1 no se resuelve, la matriz my_array_param se asigna a los valores de los elementos Value.

Example-4

En el siguiente ejemplo, se declara my_array_param como una matriz JSON y se le asigna 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 correctamente, my_array_param se asigna a los valores de la matriz flow_var_1. Sin embargo, si flow_var_1 no se resuelve, Apigee informa de una excepción.

Example-5

En el siguiente ejemplo se declara my_array_param como un array de cadenas y se le asignan 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 correctamente, my_array_param se asigna a los valores de la matriz flow_var_1. Solo si no se puede resolver flow_var_1, my_array_param se asigna a 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 Cadena Nombre de la matriz de parámetros.
type Obligatorio Cadena Tipo de datos de la matriz de parámetros. Los tipos admitidos son integer, string, boolean y double.
ref Opcional Cadena Especifica la variable de flujo de la que Apigee debe leer los valores de la matriz. Apigee usa los siguientes criterios para definir el valor del parámetro:
  • Si la variable de flujo se resuelve en el tiempo 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 tiempo de ejecución, pero no es válida, Apigee informa de una excepción.
  • Si la variable de flujo no se resuelve en el tiempo de ejecución, Apigee usa los valores especificados en los elementos <Value>.
<Value>

Especifica el valor de un elemento de una matriz.

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

Cada elemento de la matriz debe ser un elemento <Value> independiente. Puede especificar el valor de las siguientes formas:

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

El elemento <Value> utiliza 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 una matriz de parámetros enteros 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 una matriz de parámetros de cadena 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 cadena:

<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 de la matriz se asigna al valor de la variable de flujo flow_var_1. Sin embargo, si flow_var_1 no se resuelve, el valor del elemento de la matriz se define como string_1.

Ejemplo 4

En el siguiente ejemplo se define el valor del parámetro de matriz de cadenas template_strArray_param mediante el valor de la variable de flujo que se ha transferido 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 de la matriz se asigna al 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 <Value>:

Atributo ¿Es obligatorio? Tipo Descripción
ref Opcional Cadena Especifica la variable de flujo de la que Apigee debe leer el valor del parámetro. Apigee usa los siguientes criterios para definir el valor del parámetro:
  • Si la variable de flujo se resuelve en el tiempo 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 tiempo de ejecución, pero no es válida, Apigee informa de una excepción.
  • Si la variable de flujo no se resuelve en el tiempo de ejecución, Apigee usa el valor del elemento <Value>. Si el valor del elemento no es válido, Apigee informa de 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 mensaje de solicitud y se guarda 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 sobrescribe el mensaje de solicitud que ya haya, si lo hay.

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

El elemento <Request> utiliza la siguiente sintaxis:

Sintaxis

<Request>FLOW_VARIABLE_NAME</Request>

Ejemplo

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

<Request>my_request_var</Request>

Códigos de error

En esta sección se describen los códigos de fallo, los mensajes de error y las variables de fallo que define Apigee cuando esta política activa un error. Esta información es esencial si vas a desarrollar reglas de errores para gestionarlos. Para obtener más información, consulta Qué debes saber sobre los errores de políticas y Cómo gestionar los fallos.

Errores de tiempo de ejecución

Estos errores pueden producirse cuando se ejecuta la política.

Código de fallo Estado de HTTP Causa
steps.setintegrationrequest.EmptyParameterArray 500

Este error se produce cuando el elemento <ParameterArray> tiene los atributos name y type, pero no tiene el atributo ref ni el elemento <Value>.

steps.setintegrationrequest.EmptyParameterArrayValue 500

Este error se produce cuando el elemento <Value> está vacío y no se ha definido el atributo ref.

steps.setintegrationrequest.InvalidResolvedFlowVariable 500

Este error se produce cuando la variable de flujo especificada en el atributo ref de un elemento no se resuelve en un valor válido.

  • En el caso de los elementos ProjectId, IntegrationName o ApiTrigger, este error se produce si la variable de flujo se resuelve en un valor nulo, una cadena vacía o un tipo de datos no válido.

    Los valores válidos de estos elementos son los siguientes:

    • ProjectId consulta los requisitos de nomenclatura de Project ID en la sección Antes de empezar.
    • IntegrationName consulta los requisitos de nomenclatura del elemento IntegrationName.
    • ApiTrigger el nombre debe empezar por api_trigger/.
  • En el caso del elemento ParameterArray, este error se produce si la variable de flujo se resuelve en una cadena vacía.
steps.setintegrationrequest.MismatchedTypeAndResolvedRef 500

Este error se produce cuando se resuelve la variable de flujo especificada en el atributo ref del elemento <Parameter>, pero el tipo de datos del valor de la variable de flujo no coincide con el tipo de datos especificado en el atributo type.

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArray 500

Este error se produce cuando se resuelve la variable de flujo especificada en el atributo ref del elemento <ParameterArray>, pero el tipo de datos del valor de la variable de flujo no coincide con el tipo de datos especificado en el atributo type.

steps.setintegrationrequest.MismatchedTypeAndResolvedRefOfParameterArrayValue 500

Este error se produce cuando se resuelve la variable de flujo especificada en el atributo ref del elemento <Value>, pero el tipo de datos del valor de la variable de flujo no coincide con el tipo de datos especificado en el atributo type de su elemento principal (<ParameterArray>).

steps.setintegrationrequest.RequestVariableNotMessageType 500 Este error se produce cuando la variable de flujo especificada por el elemento Request no es de tipo message.
steps.setintegrationrequest.RequestVariableNotRequestMessageType 500 Este error se produce cuando la variable de flujo especificada por el elemento Request no es del tipo Mensaje de solicitud.
steps.setintegrationrequest.UnresolvedVariable 500

Este error se produce cuando Apigee no puede resolver las variables de flujo especificadas en los elementos <Parameter>, <ParameterArray> o <Value>.

Variables de error

Cuando se producen errores de ejecución en una política, Apigee genera mensajes de error. Puedes ver estos mensajes de error en la respuesta de error. En muchas ocasiones, los mensajes de error generados por el sistema pueden no ser relevantes en el contexto de su producto. Puede que quieras personalizar los mensajes de error en función del tipo de error para que sean más significativos.

Para personalizar los mensajes de error, puedes usar reglas de error o la política RaiseFault. Para obtener información sobre las diferencias entre las reglas de errores y la política RaiseFault, consulta Reglas de errores frente a la política RaiseFault. Debes comprobar las condiciones mediante el elemento Condition tanto en las reglas de errores como en la política RaiseFault. Apigee proporciona variables de error únicas para cada política. Los valores de las variables de error se definen cuando una política activa errores de tiempo de ejecución. Al usar estas variables, puede comprobar si se dan condiciones de error específicas y tomar las medidas oportunas. Para obtener más información sobre cómo comprobar las condiciones de error, consulta Crear condiciones.

En la siguiente tabla se describen las variables de error específicas de esta política.

Variables Dónde Ejemplo
fault.name El fault.name puede coincidir con cualquiera de los errores que se indican en la tabla Errores de tiempo de ejecución. El nombre del error es la última parte del código de error. fault.name Matches "UnresolvedVariable"
SetIntegrationRequest.POLICY_NAME.failed POLICY_NAME es el nombre de la política especificado por el usuario que ha provocado el error. SetIntegrationRequest.set-integration-request-1.failed = true
Para obtener más información sobre los errores de las políticas, consulta Qué debes saber sobre los errores de las políticas.

Temas relacionados

Si quieres obtener más información sobre la función Integración de aplicaciones, consulta el artículo Descripción general de Integración de aplicaciones.