Árvore de páginas

Esse recurso permite que seja utilizado um repositório auxiliar chamado RPO customizado, com programas completos ou funções especificas, permitindo a rápida customização de um determinado ambiente com um "pacote" completo, sem precisar aplicar o pacote no repositório padrão (desde que o pacote seja para o RPO customizado).

Configuração

Até a versão 19.3.1.x do Appserver Lobo Guará:

Para que seja possível utilizar esse recurso, é necessário além das chaves de RPO já existente no ambiente, indicar também o caminho do RPO customizado. Para isso informe a chave: RPOCUSTOMIZATION=<<caminho completo do arquivo>> no arquivo de ini.

A partir da versão 20.3.0.x do Appserver Harpia:

No Appserver Harpia 20.3.0.x, esse recurso esta ativado por padrão. Sendo assim, qualquer programa que seja compilado no ambiente que seja diferente do padrão da TOTVS será compilado e salvo no RPO customizado. Esse arquivo passa a fazer parte do ambiente juntamente com os RPOs Default e TLPP e terá prioridade para buscas em funções do tipo USER FUNCTION, além de salvar também classes e outros artefatos compilados no ambiente. É possível informar um local especifico para esse arquivo através da chave: RPOCUSTOM=<<caminho completo do arquivo>> no arquivo de iniCaso a chave não seja informada, o arquivo passa a ser criado por padrão na mesma pasta onde esta o executável do Appserver Harpia.


Veja um exemplo da configuração no ini:

Appserver.ini
[Environment]
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
RPOCUSTOM=D:\TOTVS\P64_X\apo\customlocal.rpo


Nesse exemplo de ini, temos 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.


Compilação

Até a versão 19.3.1.x do Appserver Lobo Guará:

Para que seja possível compilar arquivos no RPO customizado, é necessário que seja criado um ambiente com as seguintes chaves:

Appserver.ini
[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, em um ambiente isolado na sua compilação. 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.

Quando se tenta compilar em um determinado ambiente onde exista 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 única chave ativa.

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

A partir da versão 20.3.0.x do Appserver Harpia:

Toda compilação realizada no ambiente será armazenada automaticamente no RPO customizado, sem necessidade de ter um ambiente separado para isso.


Busca das funções

A busca por algum artefato, função ou classe segue a seguinte prioridade: busca primeiro no RPO default, depois procura no RPO TLPP, para então procurar no RPO customizado. Essa busca muda apenas em User Function, onde a busca ocorre primeiro no RPO Customizado.  

Para exemplificar, se temos uma função no RPO padrão, chamada User Function Cust(), 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, ele irá executar o programa do mesmo nome que exista no RPO customizado, não do RPO padrão. Na execução do programa, qualquer outra função chamada segue a mesma logica descrita anteriormente, buscando sempre nos 3 RPOs.

Inspetores de Funções e Objetos no Visual Studio Code

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:

  • RPO default => menor prioridade
  • RPO TLPP
  • RPO custom => maior proridade

Bloqueio da conexão a RPO customizado renomeado como RPO padrão

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:

console.log
[ERROR][SERVER] [Thread 1234] Custom RPO renamed as default RPO - environment [LG] - SOURCEPATH [D:\TOTVS\P64_X\apo]



Disponibilidade

Recurso disponível a partir do build 17.3.0.14 do Appserver Lobo Guará

  • Sem rótulos