Como agendar rotinas para executar automaticamente no Protheus

Hoje vou mostrar duas formas de como executar rotinas (Jobs) de forma automática no Protheus.

Existem duas formas de agendar rotinas automáticas para executar do Protheus, a primeira é diretamente pelo sistema operacional, não é muito difundida, pois se houver falhas ou problemas, não ficarão gravados logs no Protheus, mas é uma forma mais simples de se configurar.

A segunda forma é diretamente pelo Scheduler do Protheus que é uma ótima ferramenta, onde ficam logs das rotinas executadas.

Abaixo ambas as formas com prints.

Diretamente pelo Windows:

  1. Abra o bloco de notas
  2. Coloque o caminho completo do smartclient.exe. Nos parâmetros, o c coloque a Comunicação / Comunication, no parâmetro e coloque o Ambiente / Environment e no parâmetro p, coloque o nome da User Fucntion com u_ sem os parênteses, abaixo um exemplo de como fica no notepad:
C:\TOTVS\ERP\Protheus\bin\smartclient\smartclient.exe -c=tcp -e=environment -p=u_zExpNFE -q -m -l
  1. Salve o arquivo, e coloque no nome a extensão .bat

Arquivo com extensão .bat

  1. Clique no Iniciar e procure por Agendador de Tarefas

Procurando por Agendador de Tarefas

  1. Clique em Biblioteca do Agendador

Acessando a Biblioteca do Agendador

  1. Clique com o botão direito na área branca, e depois clique em Criar Tarefa Básica

Criando tarefa básica

  1. Na primeira tela, coloque o nome de execução da rotina

Nome da rotina

  1. No disparador, selecione o tipo, nesse exemplo será diariamente

Definindo a ocorrência da rotina

  1. Defina o horário que será executado a rotina, nesse exemplo, será executado todo dia as 08h30

Definindo o horário e a repetição

  1. Na ação, clique em escolher um programa

Setando para iniciar um programa

  1. Informe o caminho do arquivo que foi salvo no tópico de número 3

Informando o caminho do .bat

  1. Revise as informações na última tela e clique em Concluir

Resumo da tela

Diretamente pelo Scheduler do Protheus:

  1. Vá na sua instalação do Protheus, copie a pasta apo, e nessa nova cópia, coloque apo_job

Criando a pasta apo_job

  1. Faça a mesma coisa para a pasta appserver, crie uma cópia (se ai usa balanceamento de carga, copie de um slave / load balance) e renomeie para appserver_job

Criando a pasta appserver_job

  1. Dentro da pasta appserver_job, abra o arquivo appserver.ini
  2. A primeira alteração, é na configuração do Environment, mude o nome e o caminho coloque aquele do tópico 1

Definindo o environment no appserver.ini

  1. A segunda alteração é na porta da conexão, mude ela, nesse exemplo iremos usar a 1258

Definindo a porta do AppServer

  1. E a terceira alteração é no nome do serviço, coloque algo que remeta ao JOB

Definindo o nome do serviço

  1. Por último, iremos adicionar o Manager e o Queue (responsáveis por gerenciar e pela fila de Jobs), para isso iremos adicionar os dois, e acionar eles via ONSTART. Além disso, no Environment, lembre-se de apontar para o ambiente configurado no tópico 4
[ONSTART]
	JOBS=FWSCHDMANAG_AMBJOB,FWSCHDQUEUE_AMBJOB
	RefreshRate=120

[FWSCHDMANAG_AMBJOB]
	Main=FWSCHDMANAG
	Environment=AMBJOB
	
[FWSCHDQUEUE_AMBJOB]
	Main=FWSCHDQUEUE
	Environment=AMBJOB
  1. Crie um atalho do appserver na área de trabalho, e teste com -console ou faça a instalação com -install e deixe o serviço executando
  2. Agora vá na pasta smartclient, e abra o arquivo smartclient.ini
  3. Copie a configuração de tcp ou outro slave que tenha, mude o nome para job, e coloque a porta que foi configurada no tópico 5

Configurando no smartclient.ini

  1. Nos drivers ativos, insira o job

Deixando o driver ativo

  1. Abra o executável do Smartclient, no programa inicial coloque SIGACFG, na comunicação coloque a configuração do tópico 10 e no ambiente coloque a configuração do tópico 4

Acessando o configurador nessa nova conexão e ambiente

  1. Faça o login normalmente, e acesse Ambiente > Schedule > Schedule

Acessando a opção Schedule

  1. Na navegação em Cadastro dos Agentes

Acessando o cadastro de Agentes

  1. Clique no botão para criar o Agente automaticamente (ele será criado com até 2 threads simultâneas). Note também o IP que é gerado, se tiver sido gerado com alguma inconsistência, altere o agente e deixe com o mesmo IP que esta rodando o serviço.

Clicando no botão para criar automaticamente

  1. Clique na esquerda na opção Schedule, e deixe o Manager e o Queue iniciados

Voltando para Scheduler e iniciando os serviços

  1. Clique agora em Agent, e inicie ele também

Verificando o status do agente

  1. Agora vá em Agendamentos, e clique em Cadastro, depois clique no botão de adicionar

Adicionando nova função

  1. Insira a função (se tiver um Pergunte na função, clique no botão Parâmetros para parametrizar), insira a data e hora inicial, a empresa e filial, qual é o módulo e uma descrição

Informando os detalhes da rotina

  1. Antes de confirmar, clique no botão Recorrências

Acessando o botão de Recorrências

  1. Nas recorrências, eu coloquei para ser diário, a cada 1 dia, sem data de término, descartando tarefas atrasados, sendo executado 5 vezes por dia, com um intervalo de 3 em 3 horas (se clicar no botão Execuções, ele mostra a lista de horários que irá executar a rotina)

Definindo a recorrência do agendamento

  1. Caso você queira visualizar as execuções, dentro de Agendamentos, em Monitor, é exibido a lista de Jobs executados com os horários (dê um duplo clique na bolinha de status para ver as legendas)

Verificando as execuções

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Lucas L. Lopez disse:

    Obrigado pelo conteúdo! Muito bom!!!

  2. Walter Franco disse:

    Sempre acompanho seus artigos e este era um que sempre quis saber mais e você detalhou muito bem todo o processo.
    Parabéns!!!

Deixe uma resposta para Dan Atilio (Daniel Atilio)Cancelar resposta

Terminal de Informação