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:
- Abra o bloco de notas
- 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
- Salve o arquivo, e coloque no nome a extensão .bat
- Clique no Iniciar e procure por Agendador de Tarefas
- Clique em Biblioteca do Agendador
- Clique com o botão direito na área branca, e depois clique em Criar Tarefa Básica
- Na primeira tela, coloque o nome de execução da rotina
- No disparador, selecione o tipo, nesse exemplo será diariamente
- Defina o horário que será executado a rotina, nesse exemplo, será executado todo dia as 08h30
- Na ação, clique em escolher um programa
- Informe o caminho do arquivo que foi salvo no tópico de número 3
- Revise as informações na última tela e clique em Concluir
Diretamente pelo Scheduler do Protheus:
- Vá na sua instalação do Protheus, copie a pasta apo, e nessa nova cópia, coloque apo_job
- 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
- Dentro da pasta appserver_job, abra o arquivo appserver.ini
- A primeira alteração, é na configuração do Environment, mude o nome e o caminho coloque aquele do tópico 1
- A segunda alteração é na porta da conexão, mude ela, nesse exemplo iremos usar a 1258
- E a terceira alteração é no nome do serviço, coloque algo que remeta ao JOB
- 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
- 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
- Agora vá na pasta smartclient, e abra o arquivo smartclient.ini
- 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
- Nos drivers ativos, insira o job
- 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
- Faça o login normalmente, e acesse Ambiente > Schedule > Schedule
- Na navegação em Cadastro dos Agentes
- 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.
- Clique na esquerda na opção Schedule, e deixe o Manager e o Queue iniciados
- Clique agora em Agent, e inicie ele também
- Agora vá em Agendamentos, e clique em Cadastro, depois clique no botão de adicionar
- 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
- Antes de confirmar, clique no botão Recorrências
- 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)
- 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)
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Obrigado pelo conteúdo! Muito bom!!!
Opa, obrigado pelo comentário Lucas.
Grande abraço.
Sempre acompanho seus artigos e este era um que sempre quis saber mais e você detalhou muito bem todo o processo.
Parabéns!!!
Opa, obrigado pelo comentário e feedback Walter.
Grande abraço.
Bom dia!
Será possível fazer a mesma operação diretamente pelo Windows para o Smart Client HTML?
Bom dia Francisco, tudo joia?
Acho que somente pelo Schedule no SIGACFG.
Diretamente pelo Windows, acredito que só com o binário .exe mesmo. Mas uma alternativa é tentar acionar a abertura de um navegador, já com o programa inicial preenchido, exemplo:
https://localhost:1267/webapp/?DEBUG=10456&E=AMBTST2&P=SIGAADV&M=1
No exemplo acima, ele já traz o SIGAADV.
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.