Política

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

Icono de política

Información general

La política IntegrationCallout te permite ejecutar una integración de aplicaciones que tenga un activador de API. Sin embargo, antes de ejecutar una integración, debes ejecutar la política SetIntegrationRequest. La política SetIntegrationRequest crea un objeto de solicitud y lo pone a disposición de la política IntegrationCallout como variable de flujo. El objeto de solicitud tiene los detalles de la integración, como el nombre del activador de la API, el ID del proyecto de integración, el nombre de la integración y otros detalles configurados en la política SetIntegrationRequest. La política IntegrationCallout usa la variable de flujo del objeto de solicitud para ejecutar la integración. Puedes configurar la política IntegrationCallout para guardar la respuesta de la ejecución de la integración en una variable de flujo.

La política IntegrationCallout es útil si quieres ejecutar una integración en medio del flujo de tu proxy. También puedes ejecutar una integración especificando un endpoint de integración como endpoint de destino en lugar de configurar la política IntegrationCallout. Para obtener más información, consulta IntegrationEndpoint.

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.

<IntegrationCallout>

Especifica la política IntegrationCallout.

Valor predeterminado N/A
¿Es obligatorio? Obligatorio
Tipo Tipo complejo
Elemento principal N/A
Elementos secundarios <DisplayName>
<AsyncExecution>
<Request>
<Response>

En la siguiente tabla se ofrece una descripción general de los elementos secundarios de <IntegrationCallout>:

Elemento secundario ¿Es obligatorio? Descripción
<DisplayName> Opcional Un nombre personalizado para la política.
<AsyncExecution> Opcional Especifica si la integración debe ejecutarse en modo síncrono o asíncrono.
<Request> Obligatorio Variable de flujo que tiene el objeto de solicitud creado por la política SetIntegrationRequest.
<Response> Opcional La variable de flujo en la que se guardará la respuesta de la integración.

El elemento <IntegrationCallout> utiliza la siguiente sintaxis:

Sintaxis

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<IntegrationCallout continueOnError="[true|false]" enabled="[true|false]" name=POLICY_NAME>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  <AsyncExecution>BOOLEAN_ASYNC_EXECUTION</AsyncExecution>
  <Request clearPayload="[true|false]">REQUEST_FLOW_VARIABLE_NAME</Request>
  <Response>RESPONSE_FLOW_VARIABLE_NAME</Response>
</IntegrationCallout>

Ejemplo

En el siguiente ejemplo se muestra la definición de la política IntegrationCallout:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<IntegrationCallout continueOnError="false" enabled="true" name="Integration-Callout">
  <DisplayName>Integration-Callout-1</DisplayName>
  <AsyncExecution>true</AsyncExecution>
  <Request clearPayload="true">my_request_flow_var</Request>
  <Response>my_response_flow_var</Response>
</IntegrationCallout>

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

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

<AsyncExecution>

Especifica el modo en el que se ejecutará la integración. Puedes ejecutar la integración de forma síncrona o asíncrona.

Si se define como true, la integración se ejecuta de forma asíncrona. Si se define como false, la integración se ejecuta de forma síncrona.

  • Modo asíncrono: cuando la solicitud para ejecutar la integración llega al endpoint, este devuelve inmediatamente los IDs de ejecución de la integración, pero inicia la ejecución de la integración en el momento especificado por el elemento <ScheduleTime>. Si no has definido el elemento <ScheduleTime>, la integración se programará para que se ejecute inmediatamente. Aunque la integración esté programada para ejecutarse inmediatamente, puede que tarde unos segundos en iniciarse. Cuando la integración empieza a ejecutarse, ocurren dos cosas:
    • La integración devuelve el código de estado HTTP 200 OK para que la persona que llama pueda seguir procesando.
    • Se completa la política IntegrationCallout.
    Una vez iniciada, la integración tendrá un límite de tiempo máximo de 50 minutos para completar la ejecución.
  • Modo síncrono: cuando la solicitud para ejecutar la integración llega al endpoint, este inicia inmediatamente la ejecución de la integración y espera la respuesta. El límite de tiempo máximo para completar la ejecución es de 2 minutos. Una vez finalizada la ejecución, el endpoint devuelve una respuesta con los IDs de ejecución y otros datos de respuesta.
Valor predeterminado falso
¿Es obligatorio? Opcional
Tipo Booleano
Elemento principal <IntegrationCallout>
Elementos secundarios Ninguno

El elemento <AsyncExecution> utiliza la siguiente sintaxis:

Sintaxis

<AsyncExecution>BOOLEAN</AsyncExecution>

Ejemplo

En el siguiente ejemplo se asigna el valor true a la ejecución asíncrona:

<AsyncExecution>true</AsyncExecution>

<Request>

Especifica la variable de flujo que tiene el objeto de solicitud creado por la política SetIntegrationRequest. La política IntegrationCallout envía este objeto de solicitud a Application Integration para ejecutar la integración.

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

El elemento <Request> utiliza la siguiente sintaxis:

Sintaxis

<Request clearPayload="true">FLOW_VARIABLE_NAME</Request>

Ejemplo

En el siguiente ejemplo se especifica que el objeto de solicitud está disponible en la variable de flujo my_request_flow_var:

<Request clearPayload="true">my_request_flow_var</Request>

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

Atributo ¿Es obligatorio? Tipo Descripción
clearPayload Opcional booleano

Especifica si el objeto de solicitud se debe borrar de la memoria después de enviar la solicitud para ejecutar la integración.

  • Si se asigna el valor true, Apigee borra el objeto de solicitud.
  • Si se define como false, Apigee no borra el objeto de solicitud.

Si no especifica este atributo, el valor predeterminado es true y el objeto de solicitud se borra de la memoria.

<Response>

Especifica la variable de flujo para guardar la respuesta de la integración.

Si no especificas este elemento, la política guardará la respuesta en la variable de flujo integration.response.

Valor predeterminado integration.response
¿Es obligatorio? Opcional
Tipo Cadena
Elemento principal <IntegrationCallout>
Elementos secundarios Ninguno

Se puede acceder al resultado de la integración mediante integration.response.content o flow_variable.content. El elemento <Response> utiliza la siguiente sintaxis:

Sintaxis

<Response>FLOW_VARIABLE_NAME</Response>

Ejemplo

En el siguiente ejemplo se guarda la respuesta de la ejecución de la integración en la variable de flujo my_response_flow_var:

<Response>my_response_flow_var</Response>

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
entities.UnresolvedVariable 500 This error occurs if Apigee cannot resolve the integration.project.id or the integration.name variables.
steps.integrationcallout.ExecutionFailed 500

This error can occur if the backend target service returns an HTTP error status such as 4xx or 5xx. The possible causes include:

  • The service account deployed with the proxy has the incorrect permissions to run the integration.
  • The integration or the API trigger does not exist.
  • Application Integration is not enabled for your Google Cloud project.
  • You have configured the <ScheduleTime> element in your SetIntegrationRequest policy and the IntegrationCallout policy has the AsyncExecution set to false.
steps.integrationcallout.NullRequestVariable 500 This error occurs if the flow variable specified in the <Request> is null.
steps.integrationcallout.RequestVariableNotMessageType 500 This error occurs when the flow variable specified by the Request element is not of message type.
steps.integrationcallout.RequestVariableNotRequestMessageType 500 This error occurs when the flow variable specified by the Request element is not of Request message type.
messaging.adaptors.http.filter.GoogleTokenGenerationFailure 500

This error can occur because of an incorrect service account configuration. The possible causes include:

  • The service account deployed with the proxy does not exist in your project.
  • The service account deployed with the proxy is disabled.

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"
IntegrationCallout.POLICY_NAME.failed POLICY_NAME is the user-specified name of the policy that threw the fault. IntegrationCallout.integration-callout-1.failed = true
For more information about policy errors, see What you need to know about policy errors.

Temas relacionados

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