Informações |
---|
Documentação sobre o Schedule transferida para a Base de Conhecimento do Framework: |
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:
Aviso | ||
---|---|---|
| ||
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. |
Existem dois serviços que estão configurados no Schedule Protheus.
Para visualizar estes serviços acesse o módulo Configurador (Sigacfg) e no menu acesse Ambiente/Schedule/Schedule (CFGA010):
...
Nesta visão são exibidas informações sobre o status dos Agents e também sobre os eventos de cada um.
Figura 2 - Monitor de Agents. Aqui são exibidos os seus status e a data e hora de última utilização de cada um.
...
...
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 | ||
---|---|---|
| ||
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: Ao clicarmos em avançar, a tela de grupo de empresas é apresentada: Podemos aqui selecionar um ou todos os grupos de empresas. Selecionando o grupo 18 e clicando em avançar, a tela de filiais é apresentada: 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.
|
...
Na interface do Schedule Protheus é possível verificar as mensagens trafegadas no EAI Protheus. No Schedule, selecionando EAI a fila de transações é apresentada.
Figura 9 - Fila de transações do EAI 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.
Figura 11 - Limpeza de tabelas do Schedule Protheus
...
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.
...
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 | ||
---|---|---|
| ||
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. |
...
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:
...
Vamos agora criar uma nova rotina com Scheddef, passando um pergunte (SX1) para a rotina.
Figura 20 - Função com Scheddef definida com um grupo de perguntas
...
...
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 documento | Concluído |
---|---|
Data | 28/10/2014 |
Versão | 1.1 |
Versão anterior | 1.0 |
Autores |
Índice resumido | ||||||
|
...