Eu estou tentando fazer com que uma função de usuário dispare um email de teste no VSCode.
No módulo Configurador, associei a função a um menu de um módulo.
Programei o Schedule no Módulo Configurador e apontei o cadastro do evento para esta função.
Meu problema é que, toda a vez que preciso modificar o código ADVPL e recompilar, obtenho o erro de que não estou com acesso e exclusivo, de modo que não consigo compilar a alteração.
a) Desabilitar o cadastro do disparo do evento não consigo fazer, porque fica desabilitado;
b) Parar os dois Managers e recompilar, não adianta, dá o mesmo alerta no VSCode.
O único jeito que consegui fazer com que a compilação acontesse foi o de deletar o Cadastro, para os dois Managers da pasta Schedule, parar o serviço do servidor Protheus, pôr novamente no ar e aí recompilar.
Mas, creio que isto não está certo.
Como eu poderia recompilar uma função de usuário sem esse trabalho todo?
Olá Mauro, por que você não cria no seu appserver.ini um novo ambiente, compila por lá, em seguida altera o RPO do ambiente com schedule,
e você pode fazer sem derrubar o sistema, por exemplo
;Antes de compilar
[appserver_schedule]
SourcePath= C:\Microsoiga\Protheus\Apo\300921\
;Ambiente Dev onde erá compilado o fonte, antes de tudo copia o RPO do schedule
[appserver_schedule_dev]
SourcePath= C:\Microsoiga\Protheus\Apo\schedule\
;Após compilar, você vai copiar o RPO do _dev para um novo diretório
[appserver_schedule]
SourcePath= C:\Microsoiga\Protheus\Apo\300921\02\
Isso fará com que a compilação derrube todas as threads ativas.
Eu por exemplo sempre trabalho com ela ativa em meu ambiente de desenvolvimento, consigo compilar com schedule e rest ativos.
Para outras situações, efetuamos a chamada "troca quente", onde você troca o valor da chave sourcepath do seu ambiente no appserver.ini.
Ou seja, você vai compilar em um RPO apartados e depois colocar o caminho desse RPO atualizado no sourcepath.
Existe inclusive uma função do binário que permite saber se essa atualização foi feita:
Voce pode tambem comentar no appserver.INI a inicialização dos schedules na seção ONSTART.
1) Sobe o serviço com as opções do schedule desabilitadas
2) Compila
3) Para o serviço
4) Sobe o serviço com as opções do schedule habilitadas