V10 RecursosGuias
RecursosGuias
Guias
Voltar | Lista de artigos

Como é que o Assistente Echo efetua o agendamento das tasks?

Última alteração a 08/01/2025

As tasks podem ser agendadas de forma automática ou manual. O agendamento manual pode acontecer na sequência da ocorrência de determinados eventos no ERP ou quando o utilizador o faz explicitamente no Monitor de Operações do Assistente Echo.

Agendar uma task, neste contexto, significa que é inserido um novo registo na tabela BotWorkQueueItems e a sua prioridade revista periodicamente.

Agendamento Automático

O processo de agendamento de tasks pode ser dividido em dois passos:

  1. As tasks são criadas e inseridas na tabela BotWorkQueueItems por intermédio da pipeline LoadWorkQueue que é executada a cada seis horas;
  2. A prioridade das tasks é revista pela pipeline ScheduleTasks cuja execução ocorre de hora a hora.

Pipeline LoadWorkQueue

Nesta pipeline encontra-se o handler ManageWorkQueue que itera por todos os topics/tasks e verifica a necessidade da sua execução.

Uma execução é necessária quando as seguintes condições se verificam:

  • Não existem tasks similares nos estados 0 (Pronta), 1 (Bloqueada) e 5 (Atribuída);
  • O calendário da task encontra-se ativo;
  • O momento da verificação encontra-se entre a data/hora inicial e a tolerância e já decorreu um período (dia, semana, mês) desde a última execução;
  • Se existe um validador para a task, é verificado se esta pode ser carregada.

Se todas as condições se verificarem então é inserido um registo na tabela BotWorkQueueItems com o estado 0 (Pronta).

Pipeline ScheduleTasks

Esta pipeline é executada a cada hora e contém os handlers LoadWorkQueueItems e SchedulePendingTasks. Em conjunto, estes handlers são responsáveis pela alteração da prioridade dos registos existentes na tabela BotWorkQueueItems.

Este processo decorre da seguinte forma:

  • O handler LoadWorkQueueItems carrega todos as tasks da tabela BotWorkQueueuItems que se encontram no estado 0 (Pronta) e com prioridade menor ou igual a 999;
  • O handler SchedulingPendingTasks verifica as configurações de tolerância e resiliência da task. Se a task estiver a cinco horas de ultrapassar a data limite de execução, altera a sua prioridade para 750. Caso esteja a uma hora de ultrapassar a data limite de execução, altera a prioridade para 2000 (se nenhuma destas situações se verificar a prioridade não é alterada).

Nota: a tolerância define o limite até ao qual a task deve ser executada e a resiliência define o comportamento caso ocorram erros de execução, podendo ser configurado para repetir a execução da task dentro de um determinado período de tempo até a um limite de falhas de execução.

Agendamento Manual e na Sequência de Eventos

O agendamento das tasks pode ser efetuado manualmente, recorrendo ao Monitor de Operações do Assistente Echo, ou quando ocorrem determinados eventos no ERP, por exemplo quando existe uma alteração de preço num documento de vendas.

Nesta situação, o estado da task criada na tabela BotWorkQueueItems é o 4 (Pendente) e a sua prioridade é definida como 1000.

Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.
Artigos Relacionados
Começar a Usar Como criar um projeto de integração com Visual Studio? Como criar um projeto de extensibilidade de interface (PEX) com Visual Studio? Como criar um projeto de extensibilidade de API (Motor) com Visual Studio? Como criar separadores do utilizador com Visual Studio?