Administração do sistema

Referenciamento de entidades nos scripts Velocity

RT.FAQ-72631
Ver Guia de referência Velocity VTL

Ao utilizar scripts Velocity, é muito comum que existam variáveis de contexto que são registros de entidades e que desejamos apresentar os valores dos atributos da entidade e/ou entidades relacionadas a ela.

Para isso, as variáveis das entidades aceitam diversas combinações de macros:

${entidade.NOME_ATRIBUTO}

Usando o nome do atributo em caixa alta, a macro-substituição irá retornar o valor do atributo na forma com que ele é persistido (equivalente ao método toStringValue dos domínios). Uma data, por exemplo, sera apresentada no formato ISO (YYYY-MM-DD) e números serão apresentados com um ponto decimal como separador fracionário e sem nenhuma máscara para formatar casas decimais.

Exemplo:
2017-04-23
1240.12872886

${entidade.nome_atributo}

Usando o nome do atributo em caixa baixa, a macro-substituição irá retornar o valor do atributo no formato texto padrão (equivalente ao método toText dos domínios). Uma data, por exemplo, sera apresentada no formato padrão (DD/MM/YYYY) e números serão apresentados com vírgula como separador fracionário e usando a máscara padrão do respectivo domínio.

Exemplo:
23/04/2017
1.240,13

${entidade.nomeAtributo}

Quando o atributo é informado no formato de nomes do Java (camel case), então a macro retorna o objeto que detém o respectivo campo (classe Field). Este elemento permite o uso das chain methods do domínio que permitem, por exemplo, estabelecer uma máscara de apresentação.

Exemplo:


${entidade.lookup}

Retorna a entidade relacionada pela lookup. O nome da lookup é formado pelo nome do atributo que define a lookup sem o "_ID" que vai no seu final.

Exemplos:


${entidade.OLD_ATRIBUTO}

${entidade.old_atributo}

Caso acrescentar o prefixo "OLD_" no início de um atributo, a substituição retornará o valor antigo do atributo. O formato resultante segue a mesma convenção de caixa alta/baixa utilizada no atributo.


Testes

Para testar se as macros disponíveis estão corretas, sugere-se utilizar a interface Executor de SQL e DML e criar um objeto de teste da entidade desejada através do comando FIND seguido de um comando ECHO para testar as macros. Exemplo:
find titulo titulos where id = 19858916204 ;

echo '${titulo.titulo} ${titulo.destinatario.endereco_principal.cidade.cidade}';