Esse recurso permite que seja utilizado um repositório auxiliar, um RPO customizado com programas completos ou funções especificas, permitindo a rápida customização de um determinado ambiente com um "pacote" completo (RPO Customizado), sem precisar aplicar o pacote no repositório padrão.
Para que seja possível utilizar esse recurso, é necessário indicar o caminho do RPO customizado, alem das chaves de RPO ja existente no ambiente. Para isso coloque a chave: RPOCUSTOMIZATION=<<caminho completo do arquivo>> , como por exemplo:
[LG] SourcePath=D:\TOTVS\P64_X\apo RootPath=D:\Totvs\P64_X\pd_lg_db\ StartPath=\system_rbra\ RpoDb=top RpoLanguage=portuguese RegionalLanguage=BRA RpoVersion=120 LocalFiles=Ctree SQLiteServer=localhost SQLitePort=5056 specialkey=p12117_tst localdbextension=.dtc PictFormat=DEFAULT DateFormat=DEFAULT DBDATABASE=MSSQL DBSERVER=10.172.0.107 DBALIAS=P12_1217_NODIC RPOCUSTOMIZATION=D:\TOTVS\P64_X\apo\customlocal.rpo |
Nesse exemplo de ini, temos como exemplo um ambiente pronto para ser usado pelo usuário final na abertura do ERP com suas funções customizadas sendo carregadas (quando houver) do arquivo customlocal.rpo. Porem, para criar esse arquivo, é necessário que ele tenha sido criado em ambiente que tenha sido escrito da seguinte forma:
[LG_CUSTOM] RootPath=D:\Totvs\P64_X\pd_lg_db\ StartPath=\system_rbra\ RpoVersion=120 DBDATABASE=MSSQL DBSERVER=10.172.0.107 DBALIAS=P12_1217_NODIC RPOCUSTOMIZATION=D:\TOTVS\P64_X\apo\customlocal.rpo |
Ou seja: um RPO, para poder ser utilizado como um RPO customizado, deve ser criado dessa forma. Apesar desse RPO conviver no momento da execução com o RPO padrão, ele tem uma assinatura diferente, e não pode ser utilizado como um RPO padrão, apenas como um customizado.
Com isso, se temos uma função no RPO padrão, chamada User Function Cust() por exemplo, e no RPO customizado também tenha sido compilado uma função com mesmo nome, quando o usuário executar a chamada deste programa no ambiente LG, ele irá executar o programa do mesmo nome que exista no RPO customizado, não do RPO padrão. Alem disso, qualquer outra função que exista somente no RPO padrão, será executada normalmente deste.
Um ambiente com um RPO customizado segue algumas características:
Quando conectado em ambientes com múltiplos RPOs, as funcionalidades de inspetores de funções e objetos farão o merge dos dados nos múltiplos RPOS.
Para executar o merge dos dados, será implementada a seguinte ordem de prioridade:
A conexão a ambiente configurado para múltiplos RPOs ou somente para RPO padrão será bloqueada caso o RPO padrão em SourcePath seja na verdade um RPO customizado renomeado como padrão.
Além da mensagem de falha na conexão no VSCode, uma mensagem de erro será inserida no console.log, indicado a causa do bloqueio da conexão, o ambiente utilizado e o caminho para o arquivo do RPO customizado e renomeado como padrão:
[ERROR][SERVER] [Thread 1234] Custom RPO renamed as default RPO - environment [LG] - SOURCEPATH [D:\TOTVS\P64_X\apo] |
Recurso disponível a partir do build 17.3.0.14 do Appserver |