Olá pessoal…
Hoje vou mostrar como realizar o processo de compilação a quente no Protheus (sem precisar derrubar serviços ou usuários).
Gostaria de agradecer a ajuda do Rodolfo no desenvolvimento desse projeto que foi feito utilizando Java e JSON.
Primeiramente é necessário entender como que o Protheus funciona, ele basicamente através do AppServer.ini, conecta em um ambiente e esse ambiente tem um Repositório de Objetos (um RPO), nesse RPO que possui as funções, imagens, patchs compiladas para que o Protheus execute as funcionalidades.
Ao compilar ou aplicar alguma patch, isso requer exclusividade do ERP, pois imagine que você tem a função Beluga1, e você quer compilar a Beluga1, mas o usuário está usando ela nesse momento, isso pode causar danos a integridade.
Para contornar isso, podemos facilmente criar um apo exclusivamente para Compilação, por exemplo, criamos um RPO dentro de uma pasta, e chamamos de Compila. Então, tudo que compilarmos, ficará no Compila.
Agora precisamos com que isso fique em produção, para tanto criamos subpastas com sequencia numérica, começando por 001 por exemplo, e copiamos o RPO de dentro do Compila para esse diretório 001, após copiar, vamos em todos os arquivos AppServer.ini, e mudamos nosso ambiente de produção para apontar para esse diretório 001. Nesse momento nosso Protheus vai enxergar o RPO de dentro desse diretório 001.
E para finalizar, agora nas próximas vezes que precisar aplicar alguma patch ou compilar alguma função, basta compilar no rpo Compila, criar uma pasta com a última sequência, como por exemplo 002, e copiar o RPO do Compila para essa nova pasta (002), e em todos os AppServer.ini alterar a última sequência para essa nova pasta (002).
Ai você fala, “Daniel, eu entendi, mas e a praticidade?”, pois bem, criei um aplicativo em Java, onde você deve informar o diretório de Compilação, o diretório atual de produção e o novo. E todos os diretórios que possuem o appserver.ini que será manipulado.
Lembrando que ao fechar o aplicativo, ele já virá pré-carregado conforme as últimas parametrizações (por exemplo, já irá trazer o diretório de compilação preenchido).
Para executar, basta ter instalado o java, baixar o aplicativo e executar o .jar, seja por dois cliques, ou pelo comando “java -jar” no terminal.
Vídeo de como utilizar:
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Daniel, agora com a nova tecnologia da nova versão 12.1.33 você sabe se ainda vai continuar funcionando essa questão da compilação a quente, já que teremos 2 RPOs separados?
Eu ainda não cheguei a testar Vinicius.
Mas creio que sim, só que ao invés de alterar o RPO comum nos arquivos .ini, terá que ser alterado o caminho do rpoCustom.