Política IntegrationCallout

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Ícone de política

Vista geral

A política IntegrationCallout permite-lhe executar uma integração de aplicações que tenha um acionador de API. No entanto, antes de executar uma integração, tem de executar a política SetIntegrationRequest. A política SetIntegrationRequest cria um objeto de pedido e disponibiliza o objeto à política IntegrationCallout como uma variável de fluxo. O objeto de pedido tem os detalhes de integração, como o nome do acionador da API, o ID do projeto de integração, o nome da integração e outros detalhes configurados na política SetIntegrationRequest. A política IntegrationCallout usa a variável de fluxo do objeto de pedido para executar a integração. Pode configurar a política IntegrationCallout para guardar a resposta de execução da integração numa variável de fluxo.

A política IntegrationCallout é útil se quiser executar a integração no meio do fluxo do proxy. Em alternativa, em vez de configurar a política IntegrationCallout, também pode executar uma integração especificando um ponto final de integração como o ponto final de destino. Para mais informações, consulte o artigo IntegrationEndpoint.

Esta política é uma política extensível e a utilização desta política pode ter implicações de custo ou utilização, consoante a sua licença do Apigee. Para ver informações sobre os tipos de políticas e as implicações de utilização, consulte Tipos de políticas.

<IntegrationCallout>

Especifica a política IntegrationCallout.

Valor predefinido N/A
Obrigatório? Obrigatória
Tipo Tipo complexo
Elemento principal N/A
Elementos subordinados <DisplayName>
<AsyncExecution>
<Request>
<Response>

A tabela seguinte apresenta uma descrição geral dos elementos subordinados de <IntegrationCallout>:

Elemento secundário Obrigatório? Descrição
<DisplayName> Opcional Um nome personalizado para a política.
<AsyncExecution> Opcional Especifica se a integração tem de ser executada no modo síncrono ou no modo assíncrono.
<Request> Obrigatória A variável de fluxo que tem o objeto de pedido criado pela política SetIntegrationRequest.
<Response> Opcional A variável de fluxo para guardar a resposta da integração.

O elemento <IntegrationCallout> usa a seguinte sintaxe:

Sintaxe

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

Exemplo

O exemplo seguinte mostra a definição da 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 tem os seguintes atributos comuns a todas as políticas:

Atributo Predefinição Obrigatório? Descrição
name N/A Obrigatório

O nome interno da política. O valor do atributo name pode conter letras, números, espaços, hífenes, sublinhados e pontos finais. Este valor não pode exceder 255 carateres.

Opcionalmente, use o elemento <DisplayName> para etiquetar a política no editor de proxy da IU de gestão com um nome diferente em linguagem natural.

continueOnError falso Opcional Definido como false para devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido como true para que a execução do fluxo continue mesmo depois de uma política falhar. Veja também:
enabled verdadeiro Opcional Defina como true para aplicar a política. Defina como false para desativar a política. A política não é aplicada, mesmo que permaneça anexada a um fluxo.
async   falso Descontinuado Este atributo foi descontinuado.

Referência de elemento secundário

Esta secção descreve os elementos subordinados de <IntegrationCallout>.

<DisplayName>

Use em conjunto com o atributo name para etiquetar a política no editor de proxy da IU de gestão com um nome diferente e mais natural.

O elemento <DisplayName> é comum a todas as políticas.

Valor predefinido N/A
Obrigatório? Opcional. Se omitir <DisplayName>, é usado o valor do atributo name da política.
Tipo String
Elemento principal <PolicyElement>
Elementos subordinados Nenhum

O elemento <DisplayName> usa a seguinte sintaxe:

Sintaxe

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

Exemplo

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

O elemento <DisplayName> não tem atributos nem elementos subordinados.

<AsyncExecution>

Especifica o modo de execução da integração. Pode executar a integração de forma síncrona ou assíncrona.

Se estiver definido como true, a integração é executada de forma assíncrona. Se estiver definido como false, a integração é executada de forma síncrona.

  • Modo assíncrono: quando o pedido de execução da integração atinge o ponto final, este devolve imediatamente os IDs de execução da integração, mas inicia a execução da integração na hora especificada pelo elemento <ScheduleTime>. Se não tiver definido o elemento <ScheduleTime>, a integração é agendada para ser executada imediatamente. Embora a integração esteja agendada para ser executada imediatamente, a respetiva execução pode começar após alguns segundos. Quando a integração começa a ser executada, ocorrem as duas seguintes situações:
    • A integração devolve o Código de estado HTTP 200 OK para que o autor da chamada possa continuar o processamento.
    • A política IntegrationCallout é concluída.
    Depois de iniciada, a integração tem um limite de tempo máximo de 50 minutos para concluir a execução.
  • Modo síncrono: quando o pedido de execução da integração atinge o ponto final, este inicia imediatamente a execução da integração e aguarda a resposta. O limite de tempo máximo para concluir a execução é de 2 minutos. Após a conclusão da execução, o endpoint devolve uma resposta com os IDs de execução e outros dados de resposta.
Valor predefinido falso
Obrigatório? Opcional
Tipo Booleano
Elemento principal <IntegrationCallout>
Elementos subordinados Nenhum

O elemento <AsyncExecution> usa a seguinte sintaxe:

Sintaxe

<AsyncExecution>BOOLEAN</AsyncExecution>

Exemplo

O exemplo seguinte define a execução assíncrona como true:

<AsyncExecution>true</AsyncExecution>

<Request>

Especifica a variável de fluxo que tem o objeto de pedido criado pela política SetIntegrationRequest. A política IntegrationCallout envia este objeto de pedido para a solução Application Integration para executar a integração.

Valor predefinido N/A
Obrigatório? Obrigatória
Tipo String
Elemento principal <IntegrationCallout>
Elementos subordinados Nenhum

O elemento <Request> usa a seguinte sintaxe:

Sintaxe

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

Exemplo

O exemplo seguinte especifica que o objeto de pedido está disponível na variável de fluxo my_request_flow_var:

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

A tabela seguinte descreve os atributos de <Request>:

Atributo Obrigatório? Tipo Descrição
clearPayload Opcional booleano

Especifica se o objeto de pedido deve ser limpo da memória após o envio do pedido para executar a integração.

  • Se estiver definido como true, o Apigee limpa o objeto de pedido.
  • Se estiver definido como false, o Apigee não limpa o objeto de pedido.

Se não especificar este atributo, o valor predefinido é true e o objeto de pedido é limpo da memória.

<Response>

Especifica a variável de fluxo para guardar a resposta da integração.

Se não especificar este elemento, a política guarda a resposta na variável de fluxo integration.response.

Valor predefinido integration.response
Obrigatório? Opcional
Tipo String
Elemento principal <IntegrationCallout>
Elementos subordinados Nenhum

O resultado da integração pode ser acedido pelo integration.response.content ou flow_variable.content. O elemento <Response> usa a seguinte sintaxe:

Sintaxe

<Response>FLOW_VARIABLE_NAME</Response>

Exemplo

O exemplo seguinte guarda a resposta da execução da integração na variável de fluxo my_response_flow_var:

<Response>my_response_flow_var</Response>

Códigos de erro

Esta secção descreve os códigos de falhas, as mensagens de erro e as variáveis de falhas definidas pelo Apigee quando esta política aciona um erro. Estas informações são essenciais se estiver a desenvolver regras de falhas para resolver falhas. Para saber mais, consulte o artigo O que precisa de saber acerca dos erros de políticas e o artigo Processamento de falhas.

Erros de tempo de execução

Estes erros podem ocorrer quando a política é executada.

Código de falha Estado de HTTP Causa
entities.UnresolvedVariable 500 Este erro ocorre se o Apigee não conseguir resolver as variáveis integration.project.id ou integration.name.
steps.integrationcallout.ExecutionFailed 500

Este erro pode ocorrer se o serviço de destino de back-end devolver um estado de erro HTTP, como 4xx ou 5xx. As causas possíveis incluem:

  • A conta de serviço implementada com o proxy tem as autorizações incorretas para executar a integração.
  • A integração ou o acionador da API não existe.
  • A integração de aplicações não está ativada para o seu projeto do Google Cloud.
  • Configurou o elemento <ScheduleTime> na sua política SetIntegrationRequest e a política IntegrationCallout tem o elemento AsyncExecution definido como false.
steps.integrationcallout.NullRequestVariable 500 Este erro ocorre se a variável de fluxo especificada em <Request> for nula.
steps.integrationcallout.RequestVariableNotMessageType 500 Este erro ocorre quando a variável de fluxo especificada pelo elemento Request não é do tipo message.
steps.integrationcallout.RequestVariableNotRequestMessageType 500 Este erro ocorre quando a variável de fluxo especificada pelo elemento Request não é do tipo mensagem de pedido.
messaging.adaptors.http.filter.GoogleTokenGenerationFailure 500

Este erro pode ocorrer devido a uma configuração incorreta da conta de serviço. As causas possíveis incluem:

  • A conta de serviço implementada com o proxy não existe no seu projeto.
  • A conta de serviço implementada com o proxy está desativada.

Variáveis de falha

Sempre que existem erros de execução numa política, o Apigee gera mensagens de erro. Pode ver estas mensagens de erro na resposta de erro. Muitas vezes, as mensagens de erro geradas pelo sistema podem não ser relevantes no contexto do seu produto. Pode personalizar as mensagens de erro com base no tipo de erro para tornar as mensagens mais significativas.

Para personalizar as mensagens de erro, pode usar regras de falhas ou a política RaiseFault. Para informações sobre as diferenças entre as regras de falhas e a política RaiseFault, consulte Regras de falhas vs. a política RaiseFault. Tem de verificar as condições através do elemento Condition nas regras de falhas e na política RaiseFault. O Apigee fornece variáveis de falhas exclusivas para cada política, e os valores das variáveis de falhas são definidos quando uma política aciona erros de tempo de execução. Ao usar estas variáveis, pode verificar condições de erro específicas e tomar as medidas adequadas. Para mais informações sobre a verificação das condições de erro, consulte o artigo Criar condições.

A tabela seguinte descreve as variáveis de falha específicas desta política.

Variáveis Onde Exemplo
fault.name O fault.name pode corresponder a qualquer uma das falhas indicadas na tabela Erros de tempo de execução. O nome da falha é a última parte do código de falha. fault.name Matches "UnresolvedVariable"
IntegrationCallout.POLICY_NAME.failed POLICY_NAME é o nome especificado pelo utilizador da política que gerou a falha. IntegrationCallout.integration-callout-1.failed = true
Para mais informações sobre erros de políticas, consulte o artigo O que precisa de saber sobre erros de políticas.

Tópicos relacionados

Se quiser saber mais sobre a funcionalidade Application Integration, consulte o artigo Vista geral da Application Integration