15
Schedule Protheus Conceitos O permite que rotinas do sistema sejam agendadas para que possam ser Schedule Protheus 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 não realiza nenhum processamento. Sua função é chamar Schedule Protheus a rotina agendada no momento definido ou manter esta rotina sendo executada constantemente, quando o agendamento é configurado como . Consumo de memória, desempenho e sempre ativo processamento são atributos associados a rotina agenda, e não ao em si. Schedule Protheus O é composto por três componentes principais: Schedule Protheus Manager: Componente responsável por fazer o gerenciamento das tarefas, como o controle de geração das tarefas ( ) e o controle da fila das tarefas que serão Task Manager executadas ( ); Queue Manager Agent: Este é o componente que gerencia as execuções e distribuí as tarefas para que as configuradas que estão disponíveis no momento. Os podem estar Executes Agents 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 , e isto Schedule Protheus ocorre na execução da rotina agendada. 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 configurados. Agents Para visualizar estes serviços acesse o módulo e no menu acesse Configurador (Sigacfg) Ambi (CFGA010): ente/Schedule/Schedule Figura 1 - Task Manager e Queue Manager do Schedule Protheus. Serviços responsáveis por gerar e gerenciar a fila de tarefas. Através desta interface é possível gerenciar os serviços. O primeiro botão permite iniciar todos os serviços de uma só vez. O segundo inicia o serviço no qual se está posicionado. Já o terceiro botão para todos os serviços de uma vez e o quarto interrompe o serviço no qual se está posicionado. Devido a complexibilidade de manipulação dos serviços existe um botão de atualização (quinto botão) que permite que esta interface seja atualizada. Para que o funcione Schedule Protheus estes dois serviços devem estar iniciados. Monitoramento de Agents Nesta visão são exibidas informações sobre o status dos e também sobre os eventos de Agents cada um. Status do documento Concluído Data 28/10/2014 Versão 1.0 Versão 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 serviços 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 Considerações 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 parâmetros 2.5 Criando uma rotina com Scheddef no Schedule Protheus recebendo parâmetros do SX1 2.6 Criando uma rotina de relatório com Scheddef no Schedule Protheus recebendo parâmetros do SX1

Framework ScheduleProtheus 100815 1333 8402

Embed Size (px)

DESCRIPTION

Framework ScheduleProtheus 100815 1333 8402

Citation preview

Page 1: Framework ScheduleProtheus 100815 1333 8402

Schedule ProtheusConceitos

O permite que rotinas do sistema sejam agendadas para que possam serSchedule Protheusexecutadas 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 processoserá executado. O não realiza nenhum processamento. Sua função é chamarSchedule Protheusa rotina agendada no momento definido ou manter esta rotina sendo executada constantemente,quando o agendamento é configurado como . Consumo de memória, desempenho esempre ativoprocessamento são atributos associados a rotina agenda, e não ao em si.Schedule ProtheusO é composto por três componentes principais:Schedule Protheus

Manager: Componente responsável por fazer o gerenciamento das tarefas, como ocontrole de geração das tarefas ( ) e o controle da fila das tarefas que serãoTask Managerexecutadas ( );Queue ManagerAgent: Este é o componente que gerencia as execuções e distribuí as tarefas para que as

configuradas que estão disponíveis no momento. Os podem estarExecutes Agentslocalizados em servidores diferentes, possibilitando o balanceamento da carga deexecuções;

:Execute São os componentes responsáveis por realizar a chamada das rotinasagendadas. A única das entidades que consome licença no , e istoSchedule Protheusocorre na execução da rotina agendada.

Monitoramento dos serviços do Schedule ProtheusExistem dois serviços que estão configurados no Schedule Protheus.

:Task Manager Serviço de verificação de agendamentos. Este serviço é responsável pormonitorar os agendamentos e gerar as tarefas para execução.

:Queue Manager Serviço de gerenciamento de filas. Este é o serviço que faz adistribuição das tarefas entre os configurados.Agents

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

Figura 1 - Task Manager e Queue Manager do Schedule Protheus. Serviços responsáveis porgerar e gerenciar a fila de tarefas.

Através desta interface é possível gerenciar os serviços. O primeiro botão permite iniciar todos osserviços de uma só vez. O segundo inicia o serviço no qual se está posicionado. Já o terceiro botão para todos os serviços de uma vez e o quarto interrompe o serviço no qual seestá posicionado. Devido a complexibilidade de manipulação dos serviços existe um botão de atualização (quintobotão) que permite que esta interface seja atualizada. Para que o funcioneSchedule Protheusestes dois serviços devem estar iniciados.

Monitoramento de AgentsNesta visão são exibidas informações sobre o status dos e também sobre os eventos deAgentscada um.

Status dodocumento

Concluído

Data 28/10/2014

Versão 1.0

Versãoanterior

1.0

Autores Jandir Deodatode Souza Silva

Índice resumido

ConceitosPreparando uma rotina para seragendada no ScheduleProtheus

Índice

1 Conceitos1.1 Monitoramento dosserviços do ScheduleProtheus1.2 Monitoramento de Agents1.3 Agendamento de rotinasno Schedule Protheus1.4 Monitor da Fila do EAI1.5 Limpeza de tabelas doSchedule Protheus

2 Preparando uma rotina paraser agendada no ScheduleProtheus

2.1 Considerações sobrerotinas agendadas2.2 Agendamentos atrasados2.3 Criando uma rotina deProcesso Especial noSchedule Protheus2.4 Criando uma rotina comScheddef no ScheduleProtheus sem receberparâmetros2.5 Criando uma rotina comScheddef no ScheduleProtheus recebendoparâmetros do SX12.6 Criando uma rotina derelatório com Scheddef noSchedule Protheus recebendoparâmetros do SX1

Page 2: Framework ScheduleProtheus 100815 1333 8402

Figura 2 - Monitor de Agents. Aqui são exibidos os seus status e a data e hora de última utilizaçãode cada um.

O gerenciamento dos cadastrados é realizado da seguinte maneira:AgentsNo primeiro botão superior é possível iniciar todos os cadastrados. O segundo botão iniciaAgentssomente o no qual se está posicionado. AgentO terceiro botão interrompe o serviço de todos os e o quarto botão interrompe somente o Agents

no qual se está posicionado. AgentPara que as tarefas sejam executadas, é necessário que exista ao menos um cadastradoAgentcom a empresa equivalente a tarefa, e este esteja inicializado.Cadastrar os é muito simples. Clicando em a tela de cadastro éAgents /CadastroAgentapresentada.

Figura 3- Tela de cadastro dos Agents do Schedule Protheus

Na barra superior no botão é possível incluir automaticamente um para cada umAgentdos grupos de empresas cadastrados no sistema. Cada já vem configurado com duasAgentThreads para execução das rotinas. É possível incluir de maneira manual. Para isso, na parte inferior, em , clique emAgents Detalhesadicionar e inclua o . É necessário definir um código para o , seu nome, o Ip, porta deAgent Agentcomunicação e empresa na qual este irá se conectar e o número de Threads disponíveisAgentpara execução das rotinas agendadas. É possível também desabilitar o , caso necessário,Agentou ainda excluí-lo.

: É recomendável que seja utilizado sempre o endereço IP da máquina, eMUITO IMPORTANTEnão o seu de rede.AliasExemplo: Utilize 172.16.32.111 ao invés de Maquina_001.Dentro de é possível monitorar o posicionado. /MonitorAgent Agent

Page 3: Framework ScheduleProtheus 100815 1333 8402

Figura 4 - Monitoramento dos Agents cadastrados

É possível aqui verificar se o Agent está em execução ou não e em caso de execução, qual arotina que está sendo executada no momento e a sua última data de utilização. Isto ajuda a medirsua utilização, sendo possível diminuir o número de threads ou aumentaer de acordo com o usodeste .Agent

Agendamento de rotinas no Schedule ProtheusCadastrar as rotinas no é muito simples. Acesse Schedule Protheus Ambiente/Schedule/Sched

(CFGA010). Clicando em é possível verificar quais rotinas estão agendadasule Agendamentospara execução.

Figura 5- Visualização de rotinas agendadas para execução.

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

Page 4: Framework ScheduleProtheus 100815 1333 8402

Figura 6 - Interface para manipulação das rotinas a serem agendadas.

Na parte inferior, em detalhes é possível incluir uma nova rotina, clicando em . É necessárioIncluirincluir dados nos seguintes campos:Código – O código do agendamento é incluído automaticamente;Usuário – É necessário vincular o usuário associado à execução da rotina;Rotina – Rotina que terá a sua execução agendada. Existe um facilitador para encontrar a rotinadesejada (uma consulta padrão, ou F3). Para que a rotina seja localizada pela consulta énecessário que:

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 (veja detalhes sobre a criaçãoScheddefda no .Scheddef TDN)

O botão trará os parâmetros da rotina, caso a mesma possua definida.Parâmetros ScheddefPara rotinas que possuem definida não é possível realizar passagem de parâmetrosScheddefdiretamente na rotina. Supondo que a rotina TesteSched possua definida. Neste caso, ela deve serScheddefcadastrada no campo Rotina como 'TESTESCHED'. Caso a rotina não possua definida,Scheddefé possível realizar a passagem de parâmetros pela própria rotina, e neste caso a rotina pode sercadastrada como 'TESTESCHED (parametro1, parametro2, parametroN)'. Mais detalhes dadiferença entre rotinas com e rotinas sem (rotinas de processo especial) sãoScheddef Scheddefmostradas no tópico Preparando uma rotina para ser agendada no .Schedule ProtheusData – 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.Módulo – Defina o módulo associado a rotina agendada.Criada desta forma, a rotina será executada apenas na data e hora informada. Caso sejanecessário que o processo se repita é possível cadastrar também uma . Recorrência

Clique em e a tela de cadastro de é aberta. recorrência

Page 5: Framework ScheduleProtheus 100815 1333 8402

Figura 7 - Cadastro de recorrência para a rotina agendada.

É possível definir a regra de execução da rotina. É possível definir o padrão de (diáriorecorrência, semanal, mensal anual e sempre ativo, o número de execuções e a data de término desteagendamento). Não é possível selecionar o número de execuções e a data de término quando o padrão de Recor

é cadastrado como . Neste tipo de padrão, a rotina é executada em loop, ourência sempre ativoseja, ao final de sua execução ela é iniciada novamente, isto enquanto houver Threads de Agentsdisponíveis.Confirmando a inclusão e tendo os serviços de e ativos, a rotina já está prontaManager Agentspara ser executada pelo .Clicando . Clicando em é possívelSchedule Protheus Protheus Monitorverificar as execuções agendadas, bem como as tarefas geradas para a rotina cadastrada. Já oseventos associados a execução só estarão disponíveis para as rotinas preparadas paraagendamento, ou seja, para aquelas que tiverem SchedDef definida.É importante esclarecer a relação entre um agendamento e as tarefas geradas. Um agendamentogera uma tarefa para cada grupo de empresa/filial cadastrado para este agendamento.

Figura 8 - Rotinas agendadas e seus eventos associados.

Page 6: Framework ScheduleProtheus 100815 1333 8402

Monitor da Fila do EAINa interface do é possível verificar as mensagens trafegadas no Schedule Protheus EAI

. No selecionando a fila de transações é apresentada. Protheus Schedule, EAI

Figura 9 - Fila de transações do EAI Protheus

Aqui é possível verificar o status das mensagens recebidas e enviadas pelo , bemEAI Protheuscomo realizar o gerenciamento das mensagens. Na barra superior, existem quatro botões com asseguintes funções:

O Primeiro botão permite que as mensagens com ou volteFalha de Processamento Bloqueadasm para o status de . Somente mensagens do tipo perAguardando Processamento Assíncronasmitem o reprocessamento. Mensagens síncronas entram em estado de e não são maisFalhareprocessadas. As mensagens sofrem quatro tentativas de reprocessamentoAssíncronasautomaticamente e após isto, somente são reprocessadas com a intervenção da funcionalidade doprimeiro botão.O segundo botão bloqueia uma mensagem, e seu processamento não será realizado, a menosque a funcionalidade de seja invocada.ReprocessarO terceiro botão (lupa) permite que sejam visualizadas as mensagens originais (mensagemoriginal é a mensagem que originou o processo) ou as mensagens de resposta (o retorno dasmensagens originais). O último botão atualiza a interface das mensagens.Na parte inferior é possível verificar o das mensagens. LembrandoStatus de Processamentoque e o , tal qual o não faz o processamento da mensagem. AEAI Protheus Schedule Protheusmensagem é processada por uma rotina específica, normalmente conhecida como .Adapter EAIAs informações mostradas na parte inferior refletem o processamento desta rotina. Na lupa daparte inferior é possível conferir mais detalhes do processamento.

Page 7: Framework ScheduleProtheus 100815 1333 8402

Figura 10 - Detalhes das tarefas do EAI Protheus

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

. de tabelas

Figura 11 - Limpeza de tabelas do Schedule Protheus

É possível selecionar qual o tipo de tabela que se deseja apagar os registros e ainda selecionarum filtro para este procedimento:

Page 8: Framework ScheduleProtheus 100815 1333 8402

Figura 12 - Escolhida a tabela EAI, é possível realizar o procedimento junto com um filtro.

No exemplo acima, selecionamos a tabela e vamos agora apagar somente os registros queEAIestão bloqueados. Note que é possível incluir novos filtros para o procedimento.

Figura 13 - Selecionado o filtro 'bloqueado', para que sejam trazidos somente os registros da filado EAI que estão bloqueados.

Somente os registros bloqueados serão trazidos. Clicando no botão excluir, no canto superiordireito, os registros são excluídos.

Preparando uma rotina para ser agendada noSchedule Protheus 

Considerações sobre rotinas agendadasCriar uma rotina para ser agendada no é algo simples, porém, algunsSchedule Protheus

Page 9: Framework ScheduleProtheus 100815 1333 8402

cuidados devem ser observados. Existem algumas regras e definições que devem ser observadasno processo. Consumo de memória, travamento do serviço e desempenho são preocupações aserem tomadas pela rotina que foi agendada, e nunca pelo . Schedule ProtheusOutro cuidado que deve ser tomado ao preparar uma rotina para ser executada via Schedule, ouem qualquer job, é com relação a componentes de interface. Uma rotina que será executadaapenas no server não pode ter interação com componentes que precisam de cliente para seremcriados. O uso indevido desses componentes irá gerar um erro de comunicação econsecutivamente irá interromper o processamento.Vale ressaltar que, o apenas aciona a rotina agendada e os problemasSchedule Protheusmencionados acima não estão relacionados a ele.

Agendamentos atrasadosO mantém um controle interno dos agendamentos que não foram realizados.Schedule ProtheusDevido a esta característica, caso existam agendamentos que não foram executados no momentocorreto ele irá iniciar em sequência 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 e vamos então definir uma paraTesteSch recorrênciaeste agendamento:

Figura 15 - Exemplo de agendamento com recorrência no Schedule Protheus

Como mostra na figura 15, o processo deverá ser realizado diariamente, todos os dias da semana,sem data de término, com 36 execuções diárias, com intervalo de 30 minutos entre as execuções,com início em 27/10/14 as 00:00h. Clicamos no botão execuções e verificamos as execuções queserão agendadas. Perceba que, se estivermos cadastrando este processo as 10:00h, aosalvarmos o agendamento estaremos com 21 agendamentos atrasados (um a cada meia hora,desde as 00:00). O então irá iniciar estes processos sequencialmente, atéSchedule Protheusque todos os agendamentos atrasados sejam normalizados, voltando assim a respeitar osintervalos configurados. Esta característica também se aplica aos casos em que o servidor foiparado por qualquer motivo e o processo não pode ser inicializado no momento correto.

Page 10: Framework ScheduleProtheus 100815 1333 8402

Criando uma rotina de Processo Especial no Schedule ProtheusUma rotina de é uma rotina que não possuí a rotina estática definidProcesso Especial Scheddefa. Nestes casos a rotina agendada passa os seus parâmetros diretamente. Neste cenário amontagem do ambiente não é realizada, devendo ser tratada internamente na rotina que foiagendada. Também não é realizado o controle em semáforo da rotina agendada. Isto quer dizerque, se houver dois agendamentos da mesma rotina para o mesmo horário ou ainda se, devido auma parada no sistema ou uma configuração que permita que existam agendamentos atrasadosou ainda se a rotina estiver com a cadastrada como e houver threadsrecorrência sempre ativode livres, a rotina pode ser executada mais de uma vez ao mesmo tempo. agentNo exemplo abaixo, vamos cadastrar uma rotina que não possuí definida: SchedDef

Figura 16 - Cadastramento de uma rotina de processo especial

No exemplo acima, cadastramos a rotina TesteSch, enviando para a rotina três parâmetros:TesteSch('001',2,'003') - Uma string 001, um numérico 2 e uma segunda string 003. Como se tratade um processo especial, o ambiente não será montado pelo , porém serãoSchedule Protheusenviadas informações para a rotina para que isto seja realizado, caso necessário. Desta forma, éenviado um array para o processo especial, com as seguintes características:aArray[1] – Primeiro parâmetro passado na rotina ('001');aArray[2] – Segundo parâmetro passado na rotina (2);aArray[3] – Terceiro parâmetro passado na rotina ('003');aArray[4] – Empresa associada ao agendamento da rotina;aArray[5] – Filial associada ao agendamento da rotina;aArray[6] – Usuário associado ao agendamento;aArray[7] – Id do agendamento. Desta maneira, são sempre enviados primeiramente os parâmetros passados na rotina para logoem seguida serem enviadas as informações de empresa, filial, usuário e Id da tarefa.Vejamos um exemplo de código de processo especial:

Page 11: Framework ScheduleProtheus 100815 1333 8402

Figura 17 - Exemplo de rotina de processo especial

No exemplo acima, a rotina irá receber os parâmetros necessários e irá executar a abertura doambiente. Lembrando que neste caso, se houverem agendamentos que devam ser executados nomesmo horário e threads disponíveis a rotina poderá ser chamada mais de uma vez ao mesmotempo.Vamos observar, no console do o resultado deste processamento,Appserver Protheuslembrando que todos os serviços do devem estar ativos para que oSchedule Protheusagendamento seja executado:

Criando uma rotina com Scheddef no Schedule sem receber parâmetrosProtheus

Podemos criar uma rotina agendada no declarando na rotina a função Schedule Protheus Static. Para mais informações sobre a consulte a página no .Scheddef Scheddef TDN

Abaixo, o exemplo de cadastramento de uma rotina que possui definida, mas nãoScheddefpossui nenhum (SX1) para a rotina:Pergunte

Page 12: Framework ScheduleProtheus 100815 1333 8402

Figura 18 - Exemplo de rotina com Scheddef e sem Pergunte

No exemplo acima, nossa rotina será chamada pelo com o ambiente jáSchedule Protheusaberto, porém, não receberá nenhum parâmetro. Esta rotina também será processada como um P

.rocesso (P)Vamos realizar o agendamento desta rotina e clicar no botão parâmetros:

Figura 19 - Exemplo de agendamento de rotina com Scheddef sem parâmetros

No caso acima a rotina não possui parâmetros para serem visualizados. Vamos então agendaresta rotina para ser executada na empresa 19, filial D RJ 01 e verificar o retorno no console.log.

Não foi necessária a abertura do ambiente e nestes casos, caso existam dois processosagendados da mesma rotina para o mesmo momento, o processo é serializado, para que osegundo processo só tenha início ao término do primeiro.

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

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

Page 13: Framework ScheduleProtheus 100815 1333 8402

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

Vamos agora agendar esta rotina, e clicar no botão parâmetros:

Figura 21 - Configuração de Schedule com grupo de perguntas

Perceba que a ordem informada (Data Inicial e Data final) não foram passíveis de seremselecionadas, pois está definido no nosso que o tipo de função era um .Scheddef Processo (P)

Page 14: Framework ScheduleProtheus 100815 1333 8402

Vamos verificar o resultado no console.log

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

Vamos agora realizar o mesmo exemplo anterior, mas agora a rotina a ser agendada será do tipo . Neste caso, a ordem poderá ser configurada.Relatório (R)

Figura 22 - Exemplo de rotina de relatório com grupo de perguntas

Page 15: Framework ScheduleProtheus 100815 1333 8402

Figura 23 - Exemplo de um agendamento e rotina de relatório. Neste exemplo a aba 'Dispositivo'está visível e a ordem pode ser configurada

No console.log, podemos ver o resultado da rotina.