Recursos Avançados do Dicionário de Dados
Nesta seção serão abordados recursos avançados do dicionário de dados, com por exemplo:
- Propriedade para criar agrupadores de campos
- Propriedade para definir a visibilidade de campos
- Propriedade Propriedade para criar abas para visibilidade de campos por licença ou profile
- Propriedade para definir campos somente leitura
- Propriedade para copiar campos na duplicação de registros do dataset
- Propriedades para criar campos específicos (Telefone, CPF, Senha, CEP)
- Propriedade para criar campo do tipo SelectDistinct
- Propriedade para definir a quantidade de casas decimais de um campo
- Propriedade para forçar campo do tipo Data (sem h/min/s)
- Propriedade para gerar encode do campo
- Propriedade para definir interceptador de metados de campos
- Propriedade para definir row_metadata
- Propriedades para criação de filtros rápidos
- Criação de campos calculados do tipo BeanShell e SQL
Nos exemplos apresentados abaixo, será utilizada uma tela "Catálogo de Produto”, que apresenta os seguintes campos:
- TIPOPROD - Tipo de Produto
- REFERENCIA - Referência
- DESCRICAO - Descrição
- CODUND - Unidade
- CODCTP - Código
- ATIVO - Ativo

Tela - Catálogo de Produto
Criação de abas (UITabName)
Esta propriedade possibilidade a criação de abas. No exemplo abaixo a aba Características.

Propriedade: UITabName

Nova aba: Características
Além de enviar um campo para outra aba, também é possível enviá-lo para o formulário principal.

Propriedade: UITabName

Envio para o formulário principal
Criação de agrupadores de campos (UIGroupName)
Esta propriedade possibilidade a criação de grupos. No exemplo abaixo os grupos selecionados a partir do tipo de produto.

Propriedade: UIGroupName

Agrupador por Tipo de Produto
Definição de visibilidade de campos (visivel)
Esta propriedade possibilidade de ocultar campos. Dois valores são possíveis para o uso dessa propriedade:
- N - oculto para os usuários
- S - visível para os usuários

Propriedade: visivel
Perceba que após o uso dessa propriedade o campo Unidade foi ocultado para o usuário.

Campos Unidade invisível ao usuário final
Definição de visibilidade de campos por licença ou profile (ADD_PROFILE)
Visualmente tem o mesmo efeito da propriedade “visivel”, apresentada no tópico acima, mas agora depende de uma licença ou o profile em específico para ser visualizada.

Propriedade: APP_PROFILE
Definição de campos somente leitura (readOnly)
Esta propriedade definem campos que serão utilizados apenas como leitura. No exemplo abaixo o campo definido como somente leitura será o campo Referência.

Propriedade: readOnly

Campo Referência somente para Leitura
Criação de campos específicos (UIType)
Esta propriedade é utilizada para criação de campos específicos. Entre os campos específicos de criação temos:
- PASSWORD
- CEP
- Phone (Telefone)
- CGC (CNPJ)
- CPF
No exemplo abaixo o campo utilizado para demonstração será o PHONE.

Propriedade: UIType

Campo Referência para inserção do campo Phone
Criação de campos do tipo SelectDistinct (useSelectDistinct)
Esta propriedade transforma um campo qualquer em uma pesquisa. A pesquisa busca os registros diferentes da própria tabela, por isso o nome SelectDistinct.

Propriedade: useSelectDistinct

Campo Referência como Pesquisa para busca de registros
Definição de casas decimais de um campo (nuCasasDecimais)
Esta propriedade permite editar o número de casas decimais em campos numéricos. No exemplo abaixo o campo utilizado para demonstração será o %Desconto que passa a ter 5 casas decimais.

Propriedade: nuCasasDecimais

Campo % com cinco casas decimais.
Submeter campo do tipo Data (dataOnly)
Essa propriedade não é visual e foi criada para resolver os problemas de horário de verão. Quando ativa o campo sofre uma tratativa para inserção e alteração no banco de dados.

Propriedade: dateOnly
Geração de encode de campos
Esta propriedade é utilizada para que o conteúdo do campo seja encriptado antes de apresentar ao usuário.

Propriedade: encodedtransport

Campo Referência com encriptação de dados

Campo Referência com informação dos dados sem encriptação no banco.
Definição de interceptador de metados de campos (metadataInterceptor)
Esta propriedade permite definir um interceptador de metadados. O interceptador deve ser uma classe Java e implementar a interface FieldMetadataInterceptor.

Propriedade: metadatainterceptor

Implementação da interface FieldMetadataInterceptor

Campo Tipo Produto com adição do tipo Produto Importado
Definição de row_metadata (rmp)
Esta propriedade permite criar provedores de metadados adicionais. Os metadados são resolvidos pelo próprio dataset. Um exemplo da utilização deste recurso pode ser vista na TGFITE, onde a formatação dos campos VLRUNIT e QTDNEG depende da configuração realizada na TGFPRO (DECVLR e DECQTD).

Propriedade: rmp

Propriedade: rmp_precision

Propriedade: rmp_precision
Para concluir a geração dos metadados adicionais basta criar o provedor. Este deve implementar a interface RowMetadataProvider.

Implementação da interface RowMetadataProvider

Implementação da interface RowMetadataProvider
Criação de Filtros Rápidos
Existem propriedades específicas para criação automática de filtros rápidos. As propriedades disponíveis são:
-
filterType: Define o tipo do filtro. Podendo assumir os valores “period”, “mult-list” ou “default”. O valor “period” irá criar um filtro do tipo período (intervalo de datas). O valor “mult-list” irá criar uma lista de múltipla seleção. O valor “default” irá usar os metadados do próprio campo para criar o respectivo componente.
-
filterOrder: Define a ordem do filtro no painel de filtros.
-
filterRequired: Define a obrigatoriedade do filtro.
-
filterLabel: Define o label do filtro. O “filterLabel” tem prioridade sobre o “filterType” em relação a descrição do filtro.
-
filterSql: Define uma expressão SQL para o filtro.

Propriedades: filterOrder, filterRequired, filterType

Adição do campo de filtros: Filtros Rápidos

Propriedades: filterGroup, filterOrder, filterType

Adição do campo de filtros: Outros
Criação de campos calculados do tipo BeanShell e SQL.
Os campos calculados são apenas a nível de dicionário de dados, eles não existem fisicamente na tabela. Existem duas formas para criar um campo calculado:
-
BeanShell: basicamente criamos com ele scripts java para resolver o resultado do campo. Podem variar de uma simples expressão de soma até mesmo a chamada de um método com toda uma complexidade interna.
-
Expressão SQL: basicamente criamos um SELECT que deve retornar apenas uma única linha, com um único campo. Este SELECT será injetado na query principal da entidade na forma de sub SELECT.
-
BeanShell

Campo Calculado utilizando BeanShell
- Expressão SQL

Campo Calculado utilizando Expressão SQL

Campo calculado - Caracterização

Campo calculado - DTATUAL
Definir totalizadores de colunas de grade
Para criar um totalizador de coluna basta incluir a propriedade gridFooterOper com o valor sum. Essa propriedade deve ser utilizada para campos numéricos do tipo Integer ou Float.

Propriedades: gridFooterOper


Totalizador do Campo Base do ICMS
Controle de Acesso Especial
Para definir um controle de acesso especial devemos utilizar a opção “Controle de Acesso” do DWF Designer ou alterar o xml correspondente ItensAcessos.xml.
O acesso é criado por resourceID, ou seja pelo identificador único da tela. Neste caso, precisamos definir uma sigla e descrição para cada opção que se deseja criar o acesso especial. A sigla deve ser única dentro do contexto do resourceID, ou seja não podemos ter duas siglas iguais para a mesma tela.
Uma vez criado o acesso a opção será exibida na tela Acessos para a respectiva tela.



A configuração realizada anteriormente serve apenas para disponibilizar a opção via controle de acessos.
Posteriormente é necessário implementar a verificação de acesso via fonte (na respectiva tela). Por exemplo, para o botão “Baixar” foi verificado se o usuário logado possui acesso a sigla “Baixa”.



Updated about 2 years ago