Você está na página 1de 15

Schedule Protheus

Conceitos
O Schedule Protheus permite que rotinas do sistema sejam agendadas para que possam ser
executadas posteriormente, em um perodo determinado pelo usurio. possvel definir quando
(dias, horrios e quantidades de execues) e em qual Grupo de Empresas e Filiais o processo
ser executado. O Schedule Protheus no realiza nenhum processamento. Sua funo chamar
a rotina agendada no momento definido ou manter esta rotina sendo executada constantemente,
quando o agendamento configurado como sempre ativo. Consumo de memria, desempenho e
processamento so atributos associados a rotina agenda, e no ao Schedule Protheus em si.
O Schedule Protheus composto por trs componentes principais:
Manager: Componente responsvel por fazer o gerenciamento das tarefas, como o
controle de gerao das tarefas (Task Manager) e o controle da fila das tarefas que sero
executadas (Queue Manager);
Agent: Este o componente que gerencia as execues e distribu as tarefas para que as
Executes configuradas que esto disponveis no momento. Os Agents podem estar
localizados em servidores diferentes, possibilitando o balanceamento da carga de
execues;
Execute: So os componentes responsveis por realizar a chamada das rotinas
agendadas. A nica das entidades que consome licena no Schedule Protheus, e isto
ocorre na execuo da rotina agendada.

Monitoramento dos servios do Schedule Protheus


Existem dois servios que esto configurados no Schedule Protheus.
Task Manager: Servio de verificao de agendamentos. Este servio responsvel por
monitorar os agendamentos e gerar as tarefas para execuo.
Queue Manager: Servio de gerenciamento de filas. Este o servio que faz a
distribuio das tarefas entre os Agents configurados.
Para visualizar estes servios acesse o mdulo Configurador (Sigacfg) e no menu acesse Ambi
ente/Schedule/Schedule (CFGA010):

Figura 1 - Task Manager e Queue Manager do Schedule Protheus. Servios responsveis por
gerar e gerenciar a fila de tarefas.
Atravs desta interface possvel gerenciar os servios. O primeiro boto permite iniciar todos os
servios de uma s vez. O segundo inicia o servio no qual se est posicionado.
J o terceiro boto para todos os servios de uma vez e o quarto interrompe o servio no qual se
est posicionado.
Devido a complexibilidade de manipulao dos servios existe um boto de atualizao (quinto
boto) que permite que esta interface seja atualizada. Para que o Schedule Protheus funcione
estes dois servios devem estar iniciados.

Monitoramento de Agents
Nesta viso so exibidas informaes sobre o status dos Agents e tambm sobre os eventos de
cada um.

Status do
documento

Concludo

Data

28/10/2014

Verso

1.0

Verso
anterior

1.0

Autores

Jandir Deodato
de Souza Silva

ndice resumido
Conceitos
Preparando uma rotina para ser
agendada no Schedule
Protheus
ndice
1 Conceitos
1.1 Monitoramento dos
servios do Schedule
Protheus
1.2 Monitoramento de Agents
1.3 Agendamento de rotinas
no Schedule Protheus
1.4 Monitor da Fila do EAI
1.5 Limpeza de tabelas do
Schedule Protheus
2 Preparando uma rotina para
ser agendada no Schedule
Protheus
2.1 Consideraes sobre
rotinas agendadas
2.2 Agendamentos atrasados
2.3 Criando uma rotina de
Processo Especial no
Schedule Protheus
2.4 Criando uma rotina com
Scheddef no Schedule
Protheus sem receber
parmetros
2.5 Criando uma rotina com
Scheddef no Schedule
Protheus recebendo
parmetros do SX1
2.6 Criando uma rotina de
relatrio com Scheddef no
Schedule Protheus recebendo
parmetros do SX1

Figura 2 - Monitor de Agents. Aqui so exibidos os seus status e a data e hora de ltima utilizao
de cada um.
O gerenciamento dos Agents cadastrados realizado da seguinte maneira:
No primeiro boto superior possvel iniciar todos os Agents cadastrados. O segundo boto inicia
somente o Agent no qual se est posicionado.
O terceiro boto interrompe o servio de todos os Agents e o quarto boto interrompe somente o
Agent no qual se est posicionado.
Para que as tarefas sejam executadas, necessrio que exista ao menos um Agent cadastrado
com a empresa equivalente a tarefa, e este esteja inicializado.
Cadastrar os Agents muito simples. Clicando em Agent/Cadastro a tela de cadastro
apresentada.

Figura 3- Tela de cadastro dos Agents do Schedule Protheus


Na barra superior no boto
possvel incluir automaticamente um Agent para cada um
dos grupos de empresas cadastrados no sistema. Cada Agent j vem configurado com duas
Threads para execuo das rotinas.
possvel incluir Agents de maneira manual. Para isso, na parte inferior, em Detalhes, clique em
adicionar e inclua o Agent. necessrio definir um cdigo para o Agent, seu nome, o Ip, porta de
comunicao e empresa na qual este Agent ir se conectar e o nmero de Threads disponveis
para execuo das rotinas agendadas. possvel tambm desabilitar o Agent, caso necessrio,
ou ainda exclu-lo.
MUITO IMPORTANTE: recomendvel que seja utilizado sempre o endereo IP da mquina, e
no o seu Alias de rede.
Exemplo: Utilize 172.16.32.111 ao invs de Maquina_001.
Dentro de Agent/Monitor possvel monitorar o Agent posicionado.

Figura 4 - Monitoramento dos Agents cadastrados


possvel aqui verificar se o Agent est em execuo ou no e em caso de execuo, qual a
rotina que est sendo executada no momento e a sua ltima data de utilizao. Isto ajuda a medir
sua utilizao, sendo possvel diminuir o nmero de threads ou aumentaer de acordo com o uso
deste Agent.

Agendamento de rotinas no Schedule Protheus


Cadastrar as rotinas no Schedule Protheus muito simples. Acesse Ambiente/Schedule/Sched
ule (CFGA010). Clicando em Agendamentos possvel verificar quais rotinas esto agendadas
para execuo.

Figura 5- Visualizao de rotinas agendadas para execuo.


Para realizar o agendamento de uma nova rotina, basta ir em Cadastro e incluir a rotina na qual
se deseja realizar o agendamento.

Figura 6 - Interface para manipulao das rotinas a serem agendadas.


Na parte inferior, em detalhes possvel incluir uma nova rotina, clicando em Incluir. necessrio
incluir dados nos seguintes campos:
Cdigo O cdigo do agendamento includo automaticamente;
Usurio necessrio vincular o usurio associado execuo da rotina;
Rotina Rotina que ter a sua execuo agendada. Existe um facilitador para encontrar a rotina
desejada (uma consulta padro, ou F3). Para que a rotina seja localizada pela consulta
necessrio que:
Esta rotina esteja em um dos menus do sistema;
O usurio associado possua permisso para executar a rotina a ser agendada;
A rotina a ser agendada possua a funo static Scheddef (veja detalhes sobre a criao
da Scheddef no TDN).
O boto Parmetros trar os parmetros da rotina, caso a mesma possua Scheddef definida.
Para rotinas que possuem Scheddef definida no possvel realizar passagem de parmetros
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 no possua Scheddef definida,
possvel realizar a passagem de parmetros pela prpria rotina, e neste caso a rotina pode ser
cadastrada como 'TESTESCHED (parametro1, parametro2, parametroN)'. Mais detalhes da
diferena entre rotinas com Scheddef e rotinas sem Scheddef (rotinas de processo especial) so
mostradas no tpico Preparando uma rotina para ser agendada no Schedule Protheus.
Data Defina a data de incio para o agendamento da rotina;
Hora Defina a hora de incio 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.
Mdulo Defina o mdulo associado a rotina agendada.
Criada desta forma, a rotina ser executada apenas na data e hora informada. Caso seja
necessrio que o processo se repita possvel cadastrar tambm uma Recorrncia.
Clique em

e a tela de cadastro de recorrncia aberta.

Figura 7 - Cadastro de recorrncia para a rotina agendada.


possvel definir a regra de execuo da rotina. possvel definir o padro de recorrncia (dirio
, semanal, mensal anual e sempre ativo, o nmero de execues e a data de trmino deste
agendamento).
No possvel selecionar o nmero de execues e a data de trmino quando o padro de Recor
rncia cadastrado como sempre ativo. Neste tipo de padro, a rotina executada em loop, ou
seja, ao final de sua execuo ela iniciada novamente, isto enquanto houver Threads de Agents
disponveis.
Confirmando a incluso e tendo os servios de Manager e Agents ativos, a rotina j est pronta
para ser executada pelo Schedule Protheus.ClicandoProtheus. Clicando em Monitor possvel
verificar as execues agendadas, bem como as tarefas geradas para a rotina cadastrada. J os
eventos associados a execuo s estaro disponveis para as rotinas preparadas para
agendamento, ou seja, para aquelas que tiverem SchedDef definida.
importante esclarecer a relao entre um agendamento e as tarefas geradas. Um agendamento
gera uma tarefa para cada grupo de empresa/filial cadastrado para este agendamento.

Figura 8 - Rotinas agendadas e seus eventos associados.

Monitor da Fila do EAI


Na interface do Schedule Protheus possvel verificar as mensagens trafegadas no EAI
Protheus. No Schedule, selecionando EAI a fila de transaes apresentada.

Figura 9 - Fila de transaes do EAI Protheus


Aqui possvel verificar o status das mensagens recebidas e enviadas pelo EAI Protheus, bem
como realizar o gerenciamento das mensagens. Na barra superior, existem quatro botes com as
seguintes funes:

O Primeiro boto permite que as mensagens com Falha de Processamento ou Bloqueadas volte
m para o status de Aguardando Processamento. Somente mensagens do tipo Assncronas per
mitem o reprocessamento. Mensagens sncronas entram em estado de Falha e no so mais
reprocessadas. As mensagens Assncronas sofrem quatro tentativas de reprocessamento
automaticamente e aps isto, somente so reprocessadas com a interveno da funcionalidade do
primeiro boto.
O segundo boto bloqueia uma mensagem, e seu processamento no ser realizado, a menos
que a funcionalidade de Reprocessar seja invocada.
O terceiro boto (lupa) permite que sejam visualizadas as mensagens originais (mensagem
original a mensagem que originou o processo) ou as mensagens de resposta (o retorno das
mensagens originais). O ltimo boto atualiza a interface das mensagens.
Na parte inferior possvel verificar o Status de Processamento das mensagens. Lembrando
que e o EAI Protheus, tal qual o Schedule Protheus no faz o processamento da mensagem. A
mensagem processada por uma rotina especfica, normalmente conhecida como Adapter EAI.
As informaes mostradas na parte inferior refletem o processamento desta rotina. Na lupa da
parte inferior possvel conferir mais detalhes do processamento.

Figura 10 - Detalhes das tarefas do EAI Protheus

Limpeza de tabelas do Schedule Protheus


possvel atravs 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


possvel selecionar qual o tipo de tabela que se deseja apagar os registros e ainda selecionar
um filtro para este procedimento:

Figura 12 - Escolhida a tabela EAI, possvel realizar o procedimento junto com um filtro.
No exemplo acima, selecionamos a tabela EAI e vamos agora apagar somente os registros que
esto bloqueados. Note que possvel incluir novos filtros para o procedimento.

Figura 13 - Selecionado o filtro 'bloqueado', para que sejam trazidos somente os registros da fila
do EAI que esto bloqueados.
Somente os registros bloqueados sero trazidos. Clicando no boto excluir, no canto superior
direito, os registros so excludos.

Preparando uma rotina para ser agendada no


Schedule Protheus

Consideraes sobre rotinas agendadas


Criar uma rotina para ser agendada no Schedule Protheus algo simples, porm, alguns

cuidados devem ser observados. Existem algumas regras e definies que devem ser observadas
no processo. Consumo de memria, travamento do servio e desempenho so preocupaes 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 relao a componentes de interface. Uma rotina que ser executada
apenas no server no pode ter interao com componentes que precisam de cliente para serem
criados. O uso indevido desses componentes ir gerar um erro de comunicao e
consecutivamente ir interromper o processamento.
Vale ressaltar que, o Schedule Protheus apenas aciona a rotina agendada e os problemas
mencionados acima no esto relacionados a ele.

Agendamentos atrasados
O Schedule Protheus mantm um controle interno dos agendamentos que no foram realizados.
Devido a esta caracterstica, caso existam agendamentos que no foram executados no momento
correto ele ir iniciar em sequncia todos os agendamentos que j deveriam ter sido iniciados at
que o processo seja normalizado. Vejamos o exemplo a seguir:

Figura 14- Exemplo de agendamento de rotina no Schedule Protheus


No exemplo acima, agendamos a rotina TesteSch e vamos ento definir uma recorrncia para
este agendamento:

Figura 15 - Exemplo de agendamento com recorrncia no Schedule Protheus


Como mostra na figura 15, o processo dever ser realizado diariamente, todos os dias da semana,
sem data de trmino, com 36 execues dirias, com intervalo de 30 minutos entre as execues,
com incio em 27/10/14 as 00:00h. Clicamos no boto execues e verificamos as execues que
sero agendadas. Perceba que, se estivermos cadastrando este processo as 10:00h, ao
salvarmos o agendamento estaremos com 21 agendamentos atrasados (um a cada meia hora,
desde as 00:00). O Schedule Protheus ento ir iniciar estes processos sequencialmente, at
que todos os agendamentos atrasados sejam normalizados, voltando assim a respeitar os
intervalos configurados. Esta caracterstica tambm se aplica aos casos em que o servidor foi
parado por qualquer motivo e o processo no pode ser inicializado no momento correto.

Criando uma rotina de Processo Especial no Schedul


e Protheus
Uma rotina de Processo Especial uma rotina que no possu a rotina esttica Scheddef definid
a. Nestes casos a rotina agendada passa os seus parmetros diretamente. Neste cenrio a
montagem do ambiente no realizada, devendo ser tratada internamente na rotina que foi
agendada. Tambm no realizado o controle em semforo da rotina agendada. Isto quer dizer
que, se houver dois agendamentos da mesma rotina para o mesmo horrio ou ainda se, devido a
uma parada no sistema ou uma configurao que permita que existam agendamentos atrasados
ou ainda se a rotina estiver com a recorrncia cadastrada como sempre ativo e houver threads
de agent livres, a rotina pode ser executada mais de uma vez ao mesmo tempo.
No exemplo abaixo, vamos cadastrar uma rotina que no possu SchedDef definida:

Figura 16 - Cadastramento de uma rotina de processo especial


No exemplo acima, cadastramos a rotina TesteSch, enviando para a rotina trs parmetros:
TesteSch('001',2,'003') - Uma string 001, um numrico 2 e uma segunda string 003. Como se trata
de um processo especial, o ambiente no ser montado pelo Schedule Protheus, porm sero
enviadas informaes para a rotina para que isto seja realizado, caso necessrio. Desta forma,
enviado um array para o processo especial, com as seguintes caractersticas:
aArray[1] Primeiro parmetro passado na rotina ('001');
aArray[2] Segundo parmetro passado na rotina (2);
aArray[3] Terceiro parmetro passado na rotina ('003');
aArray[4] Empresa associada ao agendamento da rotina;
aArray[5] Filial associada ao agendamento da rotina;
aArray[6] Usurio associado ao agendamento;
aArray[7] Id do agendamento.
Desta maneira, so sempre enviados primeiramente os parmetros passados na rotina para logo
em seguida serem enviadas as informaes de empresa, filial, usurio e Id da tarefa.
Vejamos um exemplo de cdigo de processo especial:

Figura 17 - Exemplo de rotina de processo especial


No exemplo acima, a rotina ir receber os parmetros necessrios e ir executar a abertura do
ambiente. Lembrando que neste caso, se houverem agendamentos que devam ser executados no
mesmo horrio e threads disponveis a rotina poder ser chamada mais de uma vez ao mesmo
tempo.
Vamos observar, no console do Appserver Protheus o resultado deste processamento,
lembrando que todos os servios do Schedule Protheus devem estar ativos para que o
agendamento seja executado:

Criando uma rotina com Scheddef no Schedule


Protheus sem receber parmetros
Podemos criar uma rotina agendada no Schedule Protheus declarando na rotina a funo Static
Scheddef. Para mais informaes sobre a Scheddef consulte a pgina no TDN.
Abaixo, o exemplo de cadastramento de uma rotina que possui Scheddef definida, mas no
possui nenhum Pergunte (SX1) para a rotina:

Figura 18 - Exemplo de rotina com Scheddef e sem Pergunte


No exemplo acima, nossa rotina ser chamada pelo Schedule Protheus com o ambiente j
aberto, porm, no receber nenhum parmetro. Esta rotina tambm ser processada como um P
rocesso (P).
Vamos realizar o agendamento desta rotina e clicar no boto parmetros:

Figura 19 - Exemplo de agendamento de rotina com Scheddef sem parmetros


No caso acima a rotina no possui parmetros para serem visualizados. Vamos ento agendar
esta rotina para ser executada na empresa 19, filial D RJ 01 e verificar o retorno no console.log.

No foi necessria a abertura do ambiente e nestes casos, caso existam dois processos
agendados da mesma rotina para o mesmo momento, o processo serializado, para que o
segundo processo s tenha incio ao trmino do primeiro.

Criando uma rotina com Scheddef no Schedule


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

Figura 20 - Funo com Scheddef definida com um grupo de perguntas


Vamos agora agendar esta rotina, e clicar no boto parmetros:

Figura 21 - Configurao de Schedule com grupo de perguntas


Perceba que a ordem informada (Data Inicial e Data final) no foram passveis de serem
selecionadas, pois est definido no nosso Scheddef que o tipo de funo era um Processo (P).

Vamos verificar o resultado no console.log

Criando uma rotina de relatrio com Scheddef no Sch


edule Protheus recebendo parmetros do SX1
Vamos agora realizar o mesmo exemplo anterior, mas agora a rotina a ser agendada ser do tipo
Relatrio (R). Neste caso, a ordem poder ser configurada.

Figura 22 - Exemplo de rotina de relatrio com grupo de perguntas

Figura 23 - Exemplo de um agendamento e rotina de relatrio. Neste exemplo a aba 'Dispositivo'


est visvel e a ordem pode ser configurada
No console.log, podemos ver o resultado da rotina.