Esta página se aplica a Apigee y Apigee Hybrid.
Descripción general
La política IntegrationCallout te permite ejecutar una Application Integration que tiene 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 hace que el objeto esté disponible para la política IntegrationCallout como una 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 ejecución de la integración en una variable de flujo.
La política IntegrationCallout es útil si deseas ejecutar la integración en medio de tu flujo de proxy. Como alternativa, en lugar de configurar la política IntegrationCallout, también puedes ejecutar una integración si especificas un extremo de integración como tu extremo de destino. Para obtener más información, consulta IntegrationEndpoint.
Esta política es una política extensible, y el uso de esta 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.
<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 proporciona una descripción de alto nivel 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 | La variable de flujo que tiene el objeto de solicitud creado por la política SetIntegrationRequest. |
<Response> |
Opcional | La variable de flujo para guardar la respuesta de la integración. |
El elemento <IntegrationCallout>
usa 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 | Predeterminada | (obligatorio) | Descripción |
---|---|---|---|
name |
N/A | Obligatorio |
El nombre interno de la política. El valor del atributo De forma opcional, usa el elemento |
continueOnError |
falso | Opcional | Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas. Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle. También consulta:
|
enabled |
true | Opcional | Configúralo como true para aplicar la política. Configúralo como false para desactivar la política. La política no se aplicará, incluso si permanece conectada a un flujo. |
async |
falso | Obsoleta | Este atributo dejó de estar disponible. |
Referencia del elemento secundario
En esta sección, se describen los elementos secundarios de<IntegrationCallout>
.
<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.
<AsyncExecution>
Especifica el modo para ejecutar la integración. Puedes ejecutar la integración de forma síncrona o asíncrona.
Si se configura como true
, la integración se ejecuta de forma asíncrona. Si se configura como false
, la integración se ejecuta de forma síncrona.
- Modo asíncrono: Cuando la solicitud para ejecutar la integración llega al extremo, este muestra de inmediato los ID de ejecución de integración, pero comienza la ejecución de la integración en el momento especificado por el elemento
<ScheduleTime>
. Si no configuraste el elemento<ScheduleTime>
, la integración está programada para ejecutarse de inmediato. Aunque la integración está programada para ejecutarse de inmediato, su ejecución puede comenzar después de unos segundos. Cuando la integración comienza a ejecutarse, se realizan estas dos acciones:- La integración muestra el código de estado HTTP
200 OK
para que el emisor pueda continuar con el procesamiento. - Se completa la política IntegrationCallout.
- La integración muestra el código de estado HTTP
- Modo síncrono: Cuando la solicitud para ejecutar la integración llega al extremo, este comienza de inmediato la ejecución de la integración y espera la respuesta. El límite máximo de tiempo para completar la ejecución es de 2 minutos. Después de terminar la ejecución, el extremo muestra una respuesta con los ID de ejecución y otros datos de respuesta.
Valor predeterminado | false |
¿Es obligatorio? | Opcional |
Tipo | Booleano |
Elemento principal |
<IntegrationCallout> |
Elementos secundarios | Ninguno |
El elemento <AsyncExecution>
usa la siguiente sintaxis:
Sintaxis
<AsyncExecution>BOOLEAN</AsyncExecution>
Ejemplo
En el siguiente ejemplo, se establece la ejecución asíncrona en true
:
<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 | String |
Elemento principal |
<IntegrationCallout> |
Elementos secundarios | Ninguno |
El elemento <Request>
usa 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 debe borrarse de la memoria después de enviar la solicitud para ejecutar la integración.
Si no especificas este atributo, el valor predeterminado es |
<Response>
Especifica la variable de flujo para guardar la respuesta de la integración.
Si no especificas este elemento, la política guarda la respuesta en la variable de flujo integration.response
.
Valor predeterminado | integration.response |
¿Es obligatorio? | Opcional |
Tipo | String |
Elemento principal |
<IntegrationCallout> |
Elementos secundarios | Ninguno |
Se puede acceder al resultado de la integración a través de integration.response.content
o flow_variable.content
. El elemento <Response>
usa la siguiente sintaxis:
Sintaxis
<Response>FLOW_VARIABLE_NAME</Response>
Ejemplo
En el siguiente ejemplo, se guarda la respuesta de la integración ejecutada en la variable de flujo my_response_flow_var
:
<Response>my_response_flow_var</Response>
Códigos de error
En esta sección, se describen los códigos de falla, los mensajes de error y las variables de falla que establece Apigee cuando esta política activa un error. Esta información es esencial si desarrollas reglas de fallas con el propósito de manejar fallas. Para obtener más información, consulta Lo que necesitas saber sobre errores de políticas y Controla fallas.
Errores de entorno de ejecución
Estos errores pueden producirse cuando se ejecuta la política.
Código de falla | Estado de HTTP | Causa |
---|---|---|
entities.UnresolvedVariable |
500 |
Este error se produce si Apigee no puede resolver las variables integration.project.id o integration.name . |
steps.integrationcallout.ExecutionFailed |
500 |
Este error puede ocurrir si el servicio de destino del backend muestra un estado de error de HTTP, como
|
steps.integrationcallout.NullRequestVariable |
500 |
Este error se produce si la variable de flujo especificada en el <Request> es nulo. |
steps.integrationcallout.RequestVariableNotMessageType |
500 |
Este error se produce cuando la variable de flujo especificada por el elemento Request no es del tipo mensaje. |
steps.integrationcallout.RequestVariableNotRequestMessageType |
500 |
Este error se produce cuando la variable de flujo especificada por el elemento Request no es del tipo de mensaje de solicitud. |
messaging.adaptors.http.filter.GoogleTokenGenerationFailure |
500 |
Este error puede ocurrir debido a una configuración incorrecta de la cuenta de servicio. Entre las posibles causas, se incluyen las siguientes:
|
Variables con fallas
Cuando hay errores de ejecución en una política, Apigee genera mensajes de error. Puedes ver estos mensajes de error en la respuesta de error. Es posible que muchos mensajes de error generados por el sistema no sean relevantes en el contexto de tu producto. Te recomendamos personalizar los mensajes de error según el tipo de error para que los mensajes sean más significativos.
Para personalizar los mensajes de error, puedes usar reglas de falla o la política RaiseFault. Para obtener información sobre las diferencias entre las reglas de fallas y la política RaiseFault, consulta Política FaultRules en comparación con la política RaiseFault.
Debes verificar las condiciones mediante el elemento Condition
en las reglas de fallas y la política RaiseFault.
Apigee proporciona variables de fallas únicas para cada política, y los valores de las variables de fallas se establecen cuando una política activa errores de entorno de ejecución.
Si usas estas variables, puedes verificar las condiciones de error específicas y tomar las medidas adecuadas. Si deseas obtener más información para verificar las condiciones de error, consulta Condiciones de compilación.
En la siguiente tabla, se describen las variables de fallas específicas de esta política.
Variables | Donde | Ejemplo |
---|---|---|
fault.name |
El fault.name puede coincidir con cualquiera de las fallas enumeradas en la tabla Errores del entorno de ejecución.
El nombre de la falla es la última parte del código de la falla. |
fault.name Matches "UnresolvedVariable" |
IntegrationCallout.POLICY_NAME.failed |
POLICY_NAME es el nombre especificado por el usuario de la política que generó la falla. | IntegrationCallout.integration-callout-1.failed = true |
Temas relacionados
Si deseas obtener más información sobre la función de Application Integration, consulta la descripción general de Application Integration.