Notificação de LPAs com erro

Visão Geral

O agendamento de tarefas é um recurso importante que permite a criação de processos automatizados, justamente por isso é necessário garantir que todas as tarefas agendadas estejam operando normalmente.

Em casos do LPA estar com a execução finalizado em erro, deve ser informado ao responsável para que possa ser tomado a ação necessária. Neste tutorial iremos apresentar como criar um processo de notificação usando LPA + Bot de Mensagens.

Configurado Bot de mensagem

O objeto Bot de Mensagem atuará como a ponte de comunicação com os administradores do sistema. É através dele que configuraremos o provedor responsável por disparar as notificações por e-mail sempre que um LPA apresentar erro de execução.

Neste tutorial, utilizaremos o Gmail como provedor. As configurações gerais de conexão SMTP que utilizaremos são:

Propriedade Valor
Protocolo smtp
Servidor smtp.gmail.com
Porta 587
Modo SSL STARTTLS?

Fonte de dados

Para orquestrar o envio, precisaremos criar duas Fontes de Dados no Bot, sendo, uma para injetar dinamicamente as credenciais de envio, e outra para identificar quais LPAs falharam. Siga o passo a passo abaixo:

  • Configurações do provedor:
    Esta fonte centraliza as configurações do Gmail e os endereços de e-mail.

    1. Clique com o botão direito na categoria Fonte de Dados e adicione uma nova.
      image
    2. Nomeie a fonte de dados como ProviderSettings.
    3. No tipo da fonte de dados, selecione a opção Banco de dados.
    4. Na caixa de seleção de conexões, escolha a conexão da plataforma (ex.: LATROMI).
    5. Por fim, adicione o comando SQL a seguir.
WITH general_settings AS (
    SELECT
          'smtp'                                                    as protocol
        , 'smtp.gmail.com'                                          as server
        , 587                                                       as port
        , 'STARTTLS?'                                               as sslmode
        , 'Indisponibilidade de LATROMI Process Automation [LPA]'   as subject
),
sender_settings AS (
    SELECT
          'Informe o email do rementente' as emailaddress
        , 'Informe a senha de aplicativo terceiro' as password
        , 'Informe um nome para o remetente' as name
),
recipient_settings AS (
    SELECT
        -- Lista de emails separados por virgula (,)
        'Infome os emails de destino' emailaddresses
)
SELECT
    emailaddresses,
    emailaddress,
    password,
    name,
    protocol,
    server,
    port,
    sslmode,
    subject
FROM recipient_settings
JOIN sender_settings ON 1=1
JOIN general_settings ON 1=1
  • Dados dos LPAs com Erro:
    Esta fonte consultará o banco de dados para buscar os processos que falharam nas últimas 24 horas, formatando o resultado diretamente em HTML para o corpo do e-mail.

    1. Clique com o botão direito na categoria Fonte de Dados e adicione uma nova.
      image
    2. Nomeie a fonte de dados como Dados.
    3. No tipo da fonte de dados, selecione a opção Banco de dados.
    4. Na caixa de seleção de conexões, escolha a conexão da plataforma (ex.: LATROMI).
    5. Por fim, adicione o comando SQL a seguir.
WITH restriction AS (
    SELECT DISTINCT
        unnest(string_to_array(
            SUBSTRING(tags[1], 6)
            , ','
        )::integer[]) AS restricted_id
    FROM core.messages 
    WHERE 
        creationtime >= CURRENT_DATE 
        AND creationtime < CURRENT_DATE + INTERVAL '1 day'
        AND direction = 'OUT'
        AND tags IS NOT NULL
)
SELECT 
    string_agg(
        CONCAT(
            '<li>Identificador: '
            , schedules.id 
            , ' | Última ocorrência: '
            , schedules.lastoccur::DATE
            , ' | Descrição: '
            , schedules.description 
            , '</li>'
        )
        , ''
    ) AS message,
    CONCAT(
        'LPAs: ',
        string_agg(schedules.id::text, ',')
    ) AS tags
FROM core.schedules
WHERE 
    enabled = true
    AND schedules.errors IS NOT NULL
    AND NOT EXISTS (
        SELECT 1 
        FROM restriction 
        WHERE restriction.restricted_id = schedules.id
    )
HAVING COUNT(schedules.id) > 0

Provedor

Com as fontes de dados configuradas, o próximo passo é vincular essas informações ao provedor do Bot de Mensagens. Para isso, siga os passos abaixo:

  1. Na caixa de seleção Provedor, escolha a opção E-mail.
  2. Na caixa de seleção Fonte de Dados, selecione a fonte ProviderSettings (Criada na etapa anterior).
  3. Faça o mapeamento dos campos do provedor referenciando as colunas retornadas pela sua consulta SQL. Utilize a captura de tela abaixo como referência para preencher as opções corretamente:

Mensagem

Na configuração da mensagem que será enviada siga os seguintes passo para configurá-la:

  1. Na caixa de seleção Fonte de dados, selecione a fonte Dados (criada na etapa anterior)
  2. Na caixa de seleção Marcador, informe a coluna tags da fonte de dados.
  3. Na caixa de texto Mensagem, adicione o conteúdo abaixo:
Olá, administrador!

Os seguintes LPAs se encontram executando com erro:
{?Dados.message}

Vinculando ao LPA

Agora que o nosso Bot de Mensagem está completamente configurado, precisamos criar uma rotina para que ele verifique os erros periodicamente e faça o envio das notificações. Faremos isso através de um agendamento.

Siga os passos abaixo para realizar a vinculação:

  1. No menu principal do sistema, navegue até LATROMI → LPA → Agendador de Tarefas.
  2. Adicione um novo agendamento e preencha o nome como Notificação de LPAs com Erro.
  3. Nas configurações de periodicidade, defina o processo para se repetir a cada 1 hora.
  4. Avance para a janela seguinte (Fluxo de Tarefas) e adicione uma nova ação, selecionando o tipo de tarefa Chamada de objeto.
  5. Na caixa de seleção Tipo, escolha a opção Bot de Mensagens.
  6. Clique no ícone de lupa para buscar e selecionar o Bot que criamos nos passos anteriores.
  7. Salve as configurações do fluxo.
  8. Para finalizar, certifique-se de ativar o LPA marcando a caixa de ativação localizada na primeira tela do agendamento.