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
Criação de abas (UITabName)
Esta propriedade possibilidade a criação de abas. No exemplo abaixo a aba Características.
Além de enviar um campo para outra aba, também é possível enviá-lo 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.
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
Perceba que após o uso dessa propriedade o campo Unidade foi ocultado para o usuário.
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.
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.
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.
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.
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.
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.
Geração de encode de campos
Esta propriedade é utilizada para que o conteúdo do campo seja encriptado antes de apresentar ao usuário.
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.
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).
Para concluir a geração dos metadados adicionais basta criar o provedor. Este deve implementar a 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.
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
- Expressão SQL
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.
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 over 1 year ago