Utilização do LPA para geração de tarefas com o Workflow

Bom dia @josimar.picoloto!

Elaboramos um exemplo de utilização do LPA para abrir uma tarefa recorrente no Workflow.
No nosso exemplo, utilizaremos o Controle de Estoque Mínimo, ou seja, todas as vezes que determinado produto atingir a quantidade mínima de estoque, será aberta uma tarefa para que seja providenciado o seu reabastecimento.

  • O primeiro passo é cadastrar a tarefa no menu LATROMI Workflow → Cadastro → Tipo de Tarefa.

    O campo ID será utilizado na função de agendamento do LPA.
  • Com a tarefa criada, vamos configurar a automatização no LPA (menu LATROMI → LPA → Agendador de Tarefas). A figura abaixo apresenta a inclusão do agendamento da tarefa.

    Agendamento fig. 2

  • A próxima etapa é o Fluxo de Tarefas. Neste exemplo, vamos utilizar um Comando SQL.

  • Abaixo segue o código SQL utilizado:

    DO LANGUAGE plpgsql
    $BODY$
    DECLARE
       rEstoqueMinimo RECORD;
       rListaTarefaParametros RECORD;
       nIdTarefaDiaria INTEGER:= 56; -- ID do Tipo de Tarefa que controla o estoque mínimo
       
    BEGIN
    
       /* Query para verificar se algum estoque mínimo foi atingido */
       FOR rEstoqueMinimo IN
          SELECT
             produto.descricao
             ,produto.quantidadeestoqueminimo
             ,produto.quantidadesaldoestoque
          FROM produto
          WHERE produto.quantidadesaldoestoque < produto.quantidadeestoqueminimo
       LOOP
       
          /* Bucar parâmetros do Tipo de Tarefa */
          SELECT INTO 
             rListaTarefaParametros
             prioridade
             ,dtlimitealerta
             ,dtlimiteconclusao
             ,descricao
             ,textomensagempadrao
             ,arrayusuario
             ,arraygrupousuario
          FROM workflow.fnc_tarefa_retorna_parametros(nIdTarefaDiaria);
             
             
          /* Chamada da função que gera a tarefa no Painel de Tarefas - Workflow */
          SELECT workflow.fnc_listatarefa_incluir(
             nIdTarefaDiaria::integer, -- ID da tarefa
             CURRENT_TIMESTAMP, -- data de inclusão 
             rListaTarefaParametros.dtlimiteconclusao, -- data limite de conclusão
             'www.latromi.com.br', -- link que direciona o usuário para a tela de execução da tarefa.
             NULL::TEXT, -- alimenta o campo apontamentopk
             ('{"Produto":'||TO_JSON(rEstoqueMinimo.descricao::VARCHAR)||'
                ,"QuantidadeMinima":'||TO_JSON(rEstoqueMinimo.::VARCHAR)||'
                ,"Numero":'||TO_JSON(pnNumero::VARCHAR)||'}')::json, -- alimenta o campo apontamentopk
             'O produto atingiu seu estoque mínimo.'::VARCHAR::text, -- descrição da tarefa
             rListaTarefaParametros.prioridade, -- prioridade da tarefa
             rListaTarefaParametros.dtlimitealerta, --data limite para alertar o responsável da tarefa
             NULL::INTEGER , -- ID do cadastro
             'LoginUsuario', -- Login do usuário que incluiu a tarefa
             NULL::TIMESTAMP, -- data de agendamento inicial
             NULL::TIMESTAMP, -- data de agendamento final
             NULL::INTEGER, -- ID da Lista Tarefa Origem. Se aplica nos casos em que ocorre a inclusão de subtarefas
             NULL::VARCHAR , -- Login do usuário que será o responsável da tarefa
             NULL::INTEGER -- ID Lista Tarefa Valores
    
             );
       END LOOP;
       
    END;
    $BODY$
    

Deste modo, a cada 30 segundos, o LPA irá rodar essa função e verificar se precisa ou não abrir uma nova tarefa. Quando a condição da função for atingida, ou seja, quando a quantidade de estoque atingir o estoque mínimo determinado, vai abrir a tarefa para o setor de Suprimentos.

Para conferir as demais possibilidades de uso do LPA, clique aqui.

4 curtidas