Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações

Documentação sobre o Schedule transferida para a Base de Conhecimento do Framework:

Schedule - Como agendar a execução de rotinas

Conceitos

O Schedule Protheus permite que rotinas do sistema sejam agendadas para que possam ser executadas posteriormente, em um período determinado pelo usuário. É possível definir quando (dias, horários e quantidades de execuções) e em qual Grupo de Empresas e Filiais o processo será executado. O Schedule Protheus não realiza nenhum processamento. Sua função é chamar a rotina agendada no momento definido ou manter esta rotina sendo executada constantemente, quando o agendamento é configurado como sempre ativo. Consumo de memória, desempenho e processamento são atributos associados a rotina agenda, e não ao Schedule Protheus em si.
O Schedule Protheus é composto por três componentes principais:

  • Manager: Componente responsável por fazer o gerenciamento das tarefas, como o controle de geração das tarefas (Task Manager) e o controle da fila das tarefas que serão executadas (Queue Manager);
  • Agent: Este é o componente que gerencia as execuções e distribuí as tarefas para que as Executes configuradas que estão disponíveis no momento. Os Agents podem estar localizados em servidores diferentes, possibilitando o balanceamento da carga de execuções;
  • Execute: São os componentes responsáveis por realizar a chamada das rotinas agendadas. A única das entidades que consome licença no Schedule Protheus, e isto ocorre na execução da rotina agendada.
Aviso
titleImportante

A configuração do schedule Protheus deve ser realizada sempre em um único appserver. A configuração do Schedule gera informações de controle no arquivo appserver.ini acessado pela estação. Desta maneira ele sempre deve ser acessado pelo mesmo appserver que configurou o serviço. Preferêncialmente o Schedule deve ser configurado em um appserver isolado, e nunca dentro de um balance.

 

Monitoramento dos serviços do Schedule Protheus

Existem dois serviços que estão configurados no Schedule Protheus.

  • Task Manager: Serviço de verificação de agendamentos. Este serviço é responsável por monitorar os agendamentos e gerar as tarefas para execução.
  • Queue Manager: Serviço de gerenciamento de filas. Este é o serviço que faz a distribuição das tarefas entre os Agents configurados.

Para visualizar estes serviços acesse o módulo Configurador (Sigacfg) e no menu acesse Ambiente/Schedule/Schedule (CFGA010):

...

Monitoramento de Agents

Nesta visão são exibidas informações sobre o status dos Agents e também sobre os eventos de cada um.
Image Removed
Figura 2 - Monitor de Agents. Aqui são exibidos os seus status e a data e hora de última utilização de cada um.

...

Agendamento de rotinas no Schedule Protheus

...

  • Esta rotina esteja em um dos menus do sistema;
  • O usuário associado possua permissão para executar a rotina a ser agendada;
  • A rotina a ser agendada possua a função static Scheddef (veja detalhes sobre a criação da Scheddef no TDN).

O botão Parâmetros trará os parâmetros da rotina, caso a mesma possua Scheddef definida. Para rotinas que possuem Scheddef definida não é possível realizar passagem de parâmetros diretamente na rotina.
Supondo que a rotina TesteSched possua Scheddef definida. Neste caso, ela deve ser cadastrada no campo Rotina como 'TESTESCHED'. Caso a rotina não possua Scheddef definida, é possível realizar a passagem de parâmetros pela própria rotina, e neste caso a rotina pode ser cadastrada como 'TESTESCHED (parametro1, parametro2, parametroN)'. Mais detalhes da diferença entre rotinas com Scheddef e rotinas sem Scheddef (rotinas de processo especial) são mostradas no tópico Preparando uma rotina para ser agendada no Schedule Protheus.
Data – Defina a data de início para o agendamento da rotina;
Hora – Defina a hora de início do agendamento da rotina;
Ambiente – Defina em qual ambiente esta rotina será executada;
Empresa/Filial – Defina para qual par empresa/Filial a rotina será executada.

Nota
titleImportante - Melhoria disponibilizada no label 13102015

A partir deste label, para as rotinas em que a filial do agendamento pode ser selecionada e mais de uma filial possa ser selecionada (os agendamentos do EAI Protheus e TOTVS PDV não se enquadram neste requisito) é possível realizar o agendamento para todas as filiais do grupo em um único processo.

Veja o exemplo da rotina a seguir, cadastrando a ROTNAX, ao clicarmos em Empresa/Filial um wizard é apresentado:

Image Removed

Ao clicarmos em avançar, a tela de grupo de empresas é apresentada:

Image Removed

Podemos aqui selecionar um ou todos os grupos de empresas.

Selecionando o grupo 18 e clicando em avançar, a tela de filiais é apresentada:

Image Removed

Podemos selecionar as filiais que desejamos realizar o agendamento da rotina, ou podemos também não selecionar nenhuma filial, ou ainda todas.

Ao selecionar alguma filial: Será gerado um agendamento para aquele grupo/filial

Se não selecionarmos nenhuma filial: Será gerado um agendamento para o grupo de empresas

Ao selecionarmos todas as filiais: Serão gerados agendamentos para todas as filiais do sistema separadamente.

Como cada agendamento é formado pela rotina agendada mais o par grupo/filial, caso não seja escolhida nenhuma filial para o agendamento a rotina será executada em todas as filiais do sistema em um único processo (uma única thread de agent). Isto significa que o processo seguirá em fila, sendo que o processo será executado em uma filial por vez, independente da quantidade de threads disponíveis. Caso seja selecionado alguma filial, os processos poderão ocorrer em paralelo, visto que cada agendamento (rotina+ grupo +filial) será executado em uma thread de agent diferente.

 

 

...

Monitor da Fila do EAI

Na interface do Schedule Protheus é possível verificar as mensagens trafegadas no EAI Protheus. No Schedule, selecionando EAI a fila de transações é apresentada.
Image Removed
Figura 9 - Fila de transações do EAI Protheus

...

Limpeza de tabelas do Schedule Protheus

É possível através da interface do Schedule Protheus apagar registros das tarefas, da fila de mensagens do EAI Protheus ou ainda dos eventos associados. Para isto, posicione em Limpeza de tabelas.
Image Removed
Figura 11 - Limpeza de tabelas do Schedule Protheus

...

 

Considerações sobre rotinas agendadas

Criar uma rotina para ser agendada no Schedule Protheus é algo simples, porém, alguns cuidados devem ser observados. Existem algumas regras e definições que devem ser observadas no processo. Consumo de memória, travamento do serviço e desempenho são preocupações a serem tomadas pela rotina que foi agendada, e nunca pelo Schedule Protheus.
Outro cuidado que deve ser tomado ao preparar uma rotina para ser executada via Schedule, ou em qualquer job, é com relação a componentes de interface. Uma rotina que será executada apenas no server não pode ter interação com componentes que precisam de cliente para serem criados. O uso indevido desses componentes irá gerar um erro de comunicação e consecutivamente irá interromper o processamento.
Vale ressaltar que, o Schedule Protheus apenas aciona a rotina agendada e os problemas mencionados acima não estão relacionados a ele.

Agendamentos atrasados

...

Criando uma rotina de Processo Especial no Schedule Protheus

Uma rotina de Processo Especial é uma rotina que não possuí a rotina estática Scheddef definida. Nestes casos a rotina agendada passa os seus parâmetros diretamente. Uma thread separada é inicializada para o processamento e neste cenário a montagem do ambiente não é realizada, devendo ser tratada internamente na rotina que foi agendada. 

o Schedule faz o controle da fila de tarefas agendadas, de maneira que uma mesma tarefa não possa ser executada de maneira simultânea. Considera-se como tarefa um agendamento de uma rotina para um par empresa e filial.

 

Nota
titleAtenção! Libs anteriores ao label 04032016

Rotinas que não possuem Scheddef, em labels anteriores a 04032016, não possuem controle de fila pelo Schedule. Isto quer dizer que, se houver dois agendamentos da mesma rotina para o mesmo horário ou ainda se, devido a uma parada no sistema ou uma configuração que permita que existam agendamentos atrasados ou ainda se a rotina estiver com a recorrência cadastrada como sempre ativo e houver threads de agent livres, a rotina pode ser executada mais de uma vez ao mesmo tempo. 

...

Criando uma rotina com Scheddef no Schedule Protheus sem receber parâmetros

Podemos criar uma rotina agendada no Schedule Protheus declarando na rotina a função Static Scheddef. Para mais informações sobre a Scheddef consulte a página no TDN.
Abaixo, o exemplo de cadastramento de uma rotina que possui Scheddef definida, mas não possui nenhum Pergunte (SX1) para a rotina:

...

Criando uma rotina com Scheddef no Schedule Protheus recebendo parâmetros do SX1

Vamos agora criar uma nova rotina com Scheddef, passando um pergunte (SX1) para a rotina.

Image Removed
Figura 20 - Função com Scheddef definida com um grupo de perguntas

...

Criando uma rotina de relatório com Scheddef no Schedule Protheus recebendo parâmetros do SX1

...

Função que retorna se a execução está dentro do novo Schedule Protheus

FWGetRunSchedule(  )

Sem parâmetro de entrada.

Retorno - lRet - Indica se está ou não em execução pelo Schedule Protheus.

 

Status do documentoConcluído
Data28/10/2014
Versão1.1
Versão anterior1.0
Autores

Jandir Deodato De Souza Silva

Índice resumido
Índice
maxLevel1
indent10px

...