Motor de integrações
Visão Geral
O DHuO possui um motor de execução de serviços de integração responsável por executar cada componente conforme a ordem e propriedades configuradas no canvas. Ao criar uma release e implantá-la, a integração estará disponível para receber (ou consumir, dependendo do tipo de trigger presente) dados e processá-los.
Fluxo de execução
Aqui estão os conceitos envolvidos durante a execução de um fluxo de integração.
Início do fluxo
A integração inicia sua execução a partir de um trigger, atribui um MessageId e cria o contexto de execução com as informações recebidas no trigger.
Triggers
Os triggers indicam como o serviço de integração será acionado (disparado, executado), como, por exemplo: por meio de chamadas HTTP, publicação de eventos em filas/brokers de mensagens, horário de agendamento.
Toda integração deve ter pelo menos um componente do tipo Trigger. Entretanto, não é permitido adicionar mais de um trigger do mesmo tipo.
MessageId
A cada execução de um fluxo de integração, um identificador único da requisição é gerado automaticamente pelo DHuO. Por meio dele é possível, por exemplo, identificar os logs referentes a uma execução específica. Esse comportamento pode ser sobrescrito e um valor pré-definido pode ser atribuído ao campo msgID
caso a requisição recebida contenha o header MessageId
.
Contexto de execução
O contexto de execução é uma estrutura de chave-valor contendo os dados de entrada recebidos no trigger e os dados de saída da execução de cada componente. Os dados do contexto podem ser acessados em outros componentes em etapas posteriores do fluxo.
Processamento
Após a execução do trigger, os demais componentes do fluxo são executados conforme configurados no canvas. Durante a execução do componente, as configurações dinâmicas são carregadas e, a cada componente executado, o contexto de execução é atualizado com os dados de saída conforme o ID do componente.
A ordem de execução é determinada pelas conexões de origem e destino entre os componentes no canvas. A única exceção é o componente Go Plugin, caso ele seja utilizado para criar funções Go Template no fluxo. Nesse cenário, as funções são utilizadas por outros componentes, na forma de biblioteca e não fazem parte do fluxo de execução.
ID do Componente
Todo componente possui um identificador, preenchido nos formulários de configuração no canvas. Os IDs são únicos por fluxo, não sendo possível ter mais de um componente com o mesmo ID. Esse ID é utilizado para acessar os dados de saída do componente no contexto de execução.
Dados de saída
Após a execução do componente, uma estrutura chave-valor será gerada com os dados de saída. Os dados podem ser acessados pelo contexto de execução em outros componentes em etapas posteriores do fluxo a partir da sintaxe .id_do_componenteOut.atributo_da_estrutura
, onde:
- id_do_componente: valor configurado do parâmetro
ID do Componente
- Out: sufixo padrão obrigatório
- atributo_da_estrutura: atributo retornado na estrutura chave-valor de saída da execução do componente
Os campos da estrutura chave-valor vão variar conforme cada componente. Para saber mais, acesse a seção específica do componente desejado.
Tratamento de erros
Caso ocorra algum erro durante a execução do componente, a estrutura chave-valor de saída dele não é gerada. Entretanto, o fluxo não é interrompido e os próximos componentes do fluxo serão executados.
O tratamento de erros deve ser avaliado a cada componente e conforme o cenário desejado. O método mais comum de tratamento consiste em:
- Verificar se há dados de saída do componente no contexto, utilizando o componente
Data Transformation
- Construir cenários alternativos para prosseguir ou interromper o fluxo, utilizando o componente lógico
Choice
Para saber mais, acesse as seções Data Transformation e Choice dos componentes lógicos.
Dados dinâmicos
Os componentes podem possuir 3 tipos de campos com informações dinâmicas: secrets, variáveis e expressões de template
Secrets
Alguns componentes exigem comunicação por meio de autenticação. Para esse cenário, os dados de autenticação são gerenciados de maneira centralizada no DHuO como cadastro de secrets e disponíveis para uso nas integrações. Os secrets podem ter valores distintos entre ambientes onde a integração é implantada.
Após a implantação da integração, todos os secrets associados a ela serão obtidos do cofre de segurança do DHuO (Vault) e disponibilizados como variáveis de ambiente, no formato base64, para o serviço no cluster. Para saber mais sobre secrets, acesse a seção Secrets da Administração do iPaaS.
Variáveis
Durante a construção de fluxos de integração, podem surgir situações onde determinadas configurações têm valores distintos entre ambientes. Essas configurações, muitas vezes não relacionadas a regras de negócio, precisam ter um comportamento dinâmico para que um mesmo fluxo seja instalado em vários ambientes sem alteração de sua lógica.
Para esse cenário é possível utilizar variáveis. Todos os parâmetros de campos de texto dos componentes aceitam o uso de variáveis. O uso é feito utilizando a expressão {{var.nome_da_variavel}}
. Para saber mais sobre variáveis, acesse a seção Variáveis da Administração do iPaaS.
Após a implantação da integração, todas as variáveis associadas a ela serão disponibilizadas como variáveis de ambiente para o serviço no cluster.
Expressões de template
Expressões de template utilizam a linguagem Go Template para referenciar e manipular dados em um fluxo de integração. A partir dela é possível configurar atributos de entrada de um componente (no formulário do canvas) para receber valores de saída de outro componente.
A sintaxe de uma expressão de template é delimitada pelos caracteres {{
e }}
. A raiz do contexto pode ser acessada com a expressão {{.}}
e, a partir da raiz, os demais campos da estrutura chave-valor do contexto podem ser acessados navegando pela notação de ponto. Por exemplo: {{.myComponentOut.user}}
é uma expressão que acessa o campo user
da saída da execução do componente myComponent
, presente no contexto de execução da integração.
Os campos dos componentes que permitem o acesso a esses dados são indicados por (Tmpl)
nos formulários de configuração. Para saber mais sobre expressões de template, acesse a seção Go Template.
Retorno do fluxo
Por fim, o resultado da execução do último componente é considerado o retorno da execução do fluxo de integração. O tipo do retorno depende do tipo do trigger. Para os triggers HTTP e Scheduler, os status codes padrão são:
- 200, sucesso na execução do fluxo
- 400, retorno padrão para fluxos com erro
- 504, retorno padrão caso ocorra timeout na execução do fluxo
É possível alterar o código de retorno, utilizando o componente Data Transformation
. Para saber mais, acesse a seção Data Transformation.