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.
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.
Adicionar um Query atividade após o Scheduler atividade e configure-a da seguinte maneira.
Alterar o recurso da atividade para WorkflowTaskDetail, o que significa que direcionará as tarefas atuais do fluxo de trabalho.
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.
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.
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.
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.