Configuração Configurador Dicas Rápidas Protheus

Agendam. no Protheus 11

Escritor por Vinícius Gregório

 

O Protheus permite que a execução de funções (padrão ou de User Functions) ocorra através de agendamento.

 

Essa característica é extremamente útil para diversas rotinas como processamento de grandes massas de dados, importação e exportação de registros, comunicação com outros sistemas… todo tipo de tarefa que não necessite a intervenção direta dos usuários ou que, para evitar sobrecarga no servidor, possam ser executadas fora do horário comercial.

 

Manutenção de Agendamentos no Protheus

 

Para acessar a tela de manutenção de agendamentos, entre no configurador e acesse Configurador > Ambiente > Schedule

 

 

Rotina de Testes

 

Para testar a funcionalidade de agendamento de tarefas do Protheus 11 vamos utilizar uma rotina simples que irá imprimir um texto no console (ou caso, o arquivo de log esteja ativo em seu servidor do Protheus, no arquivo console.log).

 

#INCLUDE "Protheus.ch"
#INCLUDE "TbiConn.ch"

User Function XTESTE(aXEmpFil)

DEFAULT aXEmpFil	:= {"99","01"}

//PREPARE ENVIRONMENT EMPRESA aXEmpFil[1] FILIAL aXEmpFil[2] FUNNAME FunName() TABLES "SM0"

ConOut("FUNCIONOU!")

//RESET ENVIRONMENT

Return .T.

 

É um fonte bem simples que apenas utiliza a função ConOut para imprimir o texto FUNCIONOU! no console. Repare que, uma vez que a rotina agendada executa de forma autônoma, não é possível utilizar funcionalidades que exibam telas ou elementos gráficos para o usuário. Isso ocorre pois, ao contrário de uma conexão de smarclient normal, não há uma interface gráfica conectada ao processo no Protheus. Justamente por isso, em diversas rotinas no sistema, existem tratamentos para especificar se uma rotina está em execução automática ou em interface para o usuário.

Tomei a liberdade de incluir um trecho de código (ainda que comentado) que também é importante a respeito da execução em job de rotinas: PREPARE ENVIRONMENT.

Fique atualizado, É GRÁTIS!
Cadastre o seu endereço de e-mail e fique por dentro de todas as atualizações da AcademiaERP.
Não enviamos spam.

Como a função que estamos usando é muito simples, não precisaremos acessar tabelas ou demais funcionalidades de um ambiente completo de execução do Protheus. No entanto, a maioria das funções que você irá utilizar necessitará dos comandos para preparar o ambiente (tabelas abertas, variáveis de controle interno declaradas….). A sintaxe do PREPARE ENVIRONMENT identifica a empresa e filial, função em execução e quais as tabelas que deverão estar disponíveis. Utilizando o include TbiConn.ch e esse comando já é possível utilizar funcionalidades mais complexas do Protheus  nos seus agendamentos. Mas, rotinas como essa ficam para um outro artigo 😉

 

Agente

 

Para executar uma ou mais tarefas agendadas, o TOTVS Protheus 11 precisa de, no mínimo, um agente cadastrado no sistema. O agente funciona como uma instância do Protheus executando em paralelo que é responsável por controlar quando cada funcionalidade atribuída a ele é executada.

 

Clicando em “Agent”, na árvore de elementos da lateral esquerda, veremos a tela abaixo:

 

 

Essa tela lista todos os agentes cadastrados e as tarefas atribuídas a cada um. Aqui é possível inicializar ou parar os agentes (todos ou de cada vez) através da seguinte barra de opções:

 

 

Para criar um novo agente, basta clicarmos em “Cadastro” (um item abaixo) e será exibida a tela de manutenção dos agentes. Ela exibe os agentes cadastrados no browse superior (você pode selecionar um agente e ver suas configurações na parte debaixo) e, na parte inferior, a área para edição das propriedades do agente.

 

Nessa tela existem as seguintes informações para serem preenchidas pelo usuário:

 

  • Código: Valor sequencial que representa o identificador único desse agente no sistema. Ele é preenchido automaticamente;

  • Nome: Nome que identifica o agente. O preenchimento é livre e, sugere-se que indique o tipo de tarefa executada nos agendamentos;

  • IP: Endereço IP do servidor do Protheus no qual o agente se conectará para executar as tarefas agendadas. Embora permitido informar o DNS da máquina na rede (nome da máquina), é interessante sempre informar o IP do servidor;

  • Porta: Porta do serviço do Protheus no IP informado. Essas informações são indispensáveis para que o agente consiga se conectar corretamente;

  • Ambiente: Ambiente do Protheus utilizado para a conexão. Automaticamente, o sistema já traz o ambiente em que o usuário que está fazendo a manutenção está autenticado;

  • Empresa: Qual a empresa em que o Agente irá se logar no sistema. Embora exista essa informação no cadastro, nada impede que o desenvolvedor utilize funções específicas para abrir o ambiente de execução da função em outra empresa;

  • Nome da Empresa: Nome da empresa, de acordo com a instalação do Protheus (sigamat.emp – SM0). Valor preenchido automaticamente através do código da empresa informado anteriormente;

  • Número de Threads: Quantidade de instâncias do Protheus que esse agente irá utilizar quando ativado. Esse controle é muito importante pois impacta diretamente na quantidade de licenças que serão consumidas durante a execução;

  • Habilitado: Flag que indica se o Agente está ativo no momento ou não. Lembrando que as rotinas atreladas a um Agente só serão executadas caso ele esteja ativo, não importando o horário e data para o qual estão agendadas.

 

Após cadastrar corretamente um Agente, não se esqueça de ativá-lo 🙂

 

Agendamentos

 

Agora vamos para a parte mais importante: cadastrar nosso agendamento de testes. Clicando no item “Agendamentos” na lateral esquerda, podemos ver uma listagem de todos os itens cadastrados e, clicando no botão verde na barra superior, podemos forçar a execução de um agendamento a qualquer hora.

 

 

Para incluir um novo agendamento, basta clicar no item “Cadastro” logo abaixo. Essa tela irá apresentar uma listagem dos agendamentos já cadastrados e, na parte inferior, uma área de manutenção dos agendamentos:

 

 

As seguintes propriedades do agendamento estão disponíveis para edição:

 

  • Código: Valor sequencial que representa o identificador único desse agente no sistema. Ele é preenchido automaticamente;

  • Usuário: Usuário do Protheus que será utilizado para inicializar o processo;

  • Nome do usuário: Nome do usuário no sistema. É preenchido à partir do Usuário selecionado no campo anterior;

  • Rotina: Qual a função que será executada no agendamento. É exatamente igual a chamar uma função em um fonte, permitindo inclusive colocar parênteses e o parâmetro da função. Para o nosso teste, vamos chamar a nossa função compilada U_XTESTE();

  • Data: Qual a data da execução do agendamento.

  • Hora: Qual a hora em que a função será executada. Repare que o botão “Recorrência” na barra de opções permite que você especifique a execução em intervalos regulares (diáriamente, mensalmente, anual, a cada X horas…)

  • Ambiente: Qual o ambiente que será inicializado na execução;

  • Empresa/Filial: Qual empresa e filial será aberta no momento da execução. Novamente, repare que esses campos não invalidam funcionalidades que abram e utilizem um ambiente diferente;

  • Módulo: Qual o módulo do Protheus que será utilizado na execução do agendamento. Essa informação é importante pois interfere na forma como o Protheus irá consumir as licenças disponíveis para a execução do job;

  • Nome do Módulo: O nome do módulo selecionado no campo anterior e é preenchido automaticamente;

  • Habilitada: Flag que determina se a execução do agendamento está habilitada ou não;

  • Descrição: Descrição livre sobre o agendamento;

 

Ao incluir o agendamento, coloque sua execução para alguns minutos à frente. Assim você poderá acompanhar a execução e verificar se está tudo funcionando certo. Depois disso, é só esperar e verificar no console do servidor do Protheus se a mensagem “FUNCIONOU!” é impressa.

 

Monitor

 

Também é possível acompanhar e consultar a execução dos agendamentos através do monitor do sistema:

 

 

Importando Agendamentos Antigos

 

Também é possível realizar a importação de agendamentos antigos, utilizados em versões anteriores do sistema. Para tanto, na tela de cadastro de agendamentos, podemos utilizar o botão de “Importar agendamentos antigos”:

 

 

Essa funcionalidade irá ler os agendamentos existentes no SXM (antiga tabela de controle de agendamentos) e irá criar novos cadastros para esses agendamentos no sistema.

 

Conclusão

 

Essa é uma visão básica da criação de agendamentos de tarefas no TOTVS Protheus. Recomendo a todos que executem novos testes, verifiquem demais funcionalidades não exploradas nesse artigo e aprendam mais sobre o assunto. Certamente vocês irão se deparar com a necessidade de utilizar esses conhecimentos.

 

 

Abraços e até o próximo artigo

 

Sobre o Autor

Vinícius Gregório

Tecnólogo em análise de sistemas da informação pela Faculdade IBTA (SP), empreendedor da área de TI e consultor Protheus especializado em desenvolvimento AdvPL. Trabalhou em diversos projetos com os módulos de Compras, Estoque/Custos, Faturamento, Contabilidade Gerencial, Field Service/Gestão de Serviços, Financeiro, Gestão de Contratos e Gestão de Projetos. Atua também como desenvolvedor de sistemas web e é usuário fanático de sistemas e softwares open source... (vinicius.gregorio@academiaerp.com.br)

6 comentários

Deixe um comentário

Dúvida?