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.
Características
Um ambiente com um RPO customizado segue algumas características:
- Assinatura diferente: o arquivo RPO customizado, contem uma assinatura diferente do RPO padrão, logo, não é possível utilizar ele como um default, nem vice-versa, assim também como a criação de um patch gerado de um customizado não pode ser aplicado em um RPO padrão, assim como o contrário também não é possível.
- Autenticação da compilação: apesar de solicitar usuario e senha no momento da IDE de compilação utilizada conectar no ambiente, as informações passadas são ignoradas e sempre irá conectar, sendo possível realizar sempre a compilação de user functions e static functions.
- Compilação no ambiente da execução: quando um determinado ambiente receber as duas chaves, RPOCUSTOMIZATION e SOURCEPATH, a compilação nesse ambiente não será realizada, apresentado erro "Is not possible to compile objects to repository because this environment is using both CUSTOMIZATION RPO and DEFAULT" no console.log do Appserver. Para poder compilar ou aplicar patchs, configure ambientes distintos, onde cada um terá uma unica chave ativa.
Disponibilidade
Recurso disponível a partir do build 17.3.0.14 do Appserver