Execução sobreposta de workflows agendados

Última atualização em 2023-08-17
  • Tópicos
  • Workflows
    Exibir mais informações sobre este tópico
  • Criado para:
  • Intermediate
    Developer

Sobre a execução de workflows agendados

No Campaign Standard, o mecanismo de fluxo de trabalho garante que uma instância de fluxo de trabalho seja executada por apenas um processo. O bloqueio de atividades, como importações, consultas ou gravações de longa duração no banco de dados, impede a execução de qualquer outra tarefa durante a execução.

Por outro lado, as atividades não bloqueadoras não bloqueiam a execução de outras tarefas (geralmente atividades aguardando um evento como o Scheduler atividade).

Isso pode levar a um cenário em que um fluxo de trabalho com base em agendamento pode começar a ser executado mesmo quando a execução anterior desse mesmo fluxo de trabalho ainda não foi concluída, resultando potencialmente em problemas de dados inesperados.

Portanto, ao projetar um workflow agendado que inclua várias atividades, é necessário garantir que o workflow não seja reagendado até que seja concluído. Para fazer isso, é necessário configurar o workflow para impedir sua execução se uma ou mais tarefas de uma execução anterior ainda estiverem pendentes.

Configuração do fluxo de trabalho

Para verificar se uma ou mais tarefas de uma execução de workflow anterior ainda estão pendentes, é necessário usar um Query e uma Test atividade.

  1. Adicionar um Query atividade após o Scheduler atividade e configure-a da seguinte maneira.

  2. Alterar o recurso da atividade para WorkflowTaskDetail, o que significa que direcionará as tarefas atuais do fluxo de trabalho.

  3. Configure o query com as regras abaixo:

    • A primeira regra filtra a tarefa atual (query2), bem como a próxima tarefa de agendamento (schedule2) pertencente ao fluxo de trabalho atual.

      OBSERVAÇÃO

      Quando um Scheduler A atividade é iniciada, ela adiciona imediatamente outra tarefa de agendamento para ser executada no próximo horário agendado e iniciar o workflow. Portanto, é importante filtrar as tarefas de query e agendamento ao procurar tarefas pendentes de uma execução anterior.

    • A segunda regra determina se alguma tarefa de uma execução anterior do workflow ainda está ativa (pendente), o que corresponde ao status de execução 0.

  4. Adicionar um Test para verificar o número de tarefas pendentes devolvidas pelo operador Query atividade. Para fazer isso, configure duas transições de saída.

    • A primeira transição continuará a execução do workflow se não houver tarefas pendentes,
    • A segunda transição cancela a execução do workflow se houver tarefas pendentes.

Agora você pode configurar o restante do fluxo de trabalho conforme necessário. Se a execução do workflow for cancelada devido a tarefas pendentes, quando o workflow for executado novamente de acordo com o agendamento, ele poderá passar por essas etapas. Isso garantirá que a execução do workflow continuará somente se não houver tarefas ativas (pendentes) de uma execução anterior.

Nesta página