Page tree

Envio ativo para produtos com estoque alterado desde o último envio

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

SIGAEST - Estoque e Custos

Função:

SCHEDESTMG.PRW - Schedule para envio de produtos com estoque alterado

Situação/Requisito:

Realizar envio de produtos que tiveram o estoque alterado com base no último envio.

Solução/Implementação:

Implementado a rotina SCHEDESTMG que deverá ser responsável por enviar os produtos que tiveram o estoque modificado. Segue abaixo configurações necessárias para agendamento da rotina.

Conceito:

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.

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):



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


Por intermédio 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 Schedule Protheus funcione estes dois serviços devem estar iniciados.

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. 

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 gerenciamento dos Agents cadastrados é realizado da seguinte maneira:
No primeiro botão superior é possível iniciar todos os Agents cadastrados. O segundo botão inicia somente o Agent no qual se está posicionado. 
O terceiro botão interrompe o serviço de todos os Agents e o quarto botão interrompe somente o Agent no qual se está posicionado. 
Para que as tarefas sejam executadas, é necessário 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 botão  é possível incluir automaticamente um Agent para cada um dos grupos de empresas cadastrados no sistema. Cada Agent já vem configurado com duas Threads para execução das rotinas. 
É possível incluir Agents de maneira manual. Para isso, na parte inferior, em Detalhes, clique em adicionar e inclua o Agent. É necessário definir um código para o Agent, seu nome, o Ip, porta de comunicação e empresa na qual este Agent irá se conectar e o número de Threads disponíveis para execução das rotinas agendadas. É possível também desabilitar o Agent, caso necessário, ou ainda excluí-lo.


Importante:

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




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 a rotina que está sendo executada no momento e a sua última data de utilização. Isto ajuda a medir sua utilização, sendo possível diminuir o número de threads ou aumentaer de acordo com o uso deste Agent.

Agendamento da rotina SCHEDESTMG

Cadastrar as rotinas no Schedule Protheus é muito simples. Acesse Ambiente/Schedule/Schedule (CFGA010). Clicando em Agendamentos é possível verificar quais rotinas estão agendadas para execução. 



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


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 manipulação das rotinas a serem agendadas.


Na parte inferior, em detalhes é possível incluir uma nova rotina, clicando em Incluir. É necessário incluir 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 rotina desejada (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 Scheddef (veja detalhes sobre a criação da Scheddef no documento Definição de Static Function SchedDef para o novo Schedule).

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.

Módulo – Defina o módulo associado a rotina agendada.

Criada desta forma, a rotina será executada apenas na data e hora informada. Caso seja necessário que o processo se repita é possível cadastrar também uma Recorrência
Clique em  e a tela de cadastro de recorrência é aberta. 


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 recorrência (diário, semanal, mensal anual e sempre ativo, o número de execuções e a data de término deste agendamento). 
Não é possível selecionar o número de execuções e a data de término quando o padrão de Recorrência é cadastrado como sempre ativo. Neste tipo de padrão, a rotina é executada em loop, ou seja, ao final de sua execução ela é iniciada novamente, isto enquanto houver Threads de Agents disponíveis.
Confirmando a inclusão e tendo os serviços de Manager e Agents ativos, a rotina já está pronta para ser executada pelo Schedule Protheus.Clicando Protheus. Clicando em Monitor é possível verificar as execuções agendadas, bem como as tarefas geradas para a rotina cadastrada. Já os eventos associados a execução só estarão disponíveis para as rotinas preparadas para agendamento, ou seja, para aquelas que tiverem SchedDef definida.
É importante esclarecer a relação 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.

Cadastro do adapter STOCKLEVEL

Deve ser feito o cadastro da mensagem StockLevel, reponsavel pelo envio de dos dados dos produtos que foram encontrados naquele periodo.

Conceitos de utilização da rotina SCHEDESTMG

A rotina SCHEDESTMG tem por objetivo enviar informações dos produtos cadastrados que tiveram movimentações e atualizações de saldos realizando consulta nas tabelas de Entradas (SD1), Saídas(SD2) e Movimentações Internas(SD3), verificando desde o último envio o que teve de atualização de saldos.