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
1061

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.

999

Propriedade: UITabName

836

Nova aba: Características

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

921

Propriedade: UITabName

816

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.

662

Propriedade: UIGroupName

712

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
621

Propriedade: visivel

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

939

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.

434

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.

591

Propriedade: readOnly

1037

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.

794

Propriedade: UIType

1017

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.

671

Propriedade: useSelectDistinct

1164

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.

816

Propriedade: nuCasasDecimais

714

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.

401

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.

807

Propriedade: encodedtransport

1512

Campo Referência com encriptação de dados

705

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.

898

Propriedade: metadatainterceptor

938

Implementação da interface FieldMetadataInterceptor

1606

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).

878

Propriedade: rmp

897

Propriedade: rmp_precision

847

Propriedade: rmp_precision

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

800

Implementação da interface RowMetadataProvider

877

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.

867

Propriedades: filterOrder, filterRequired, filterType

1000

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

895

Propriedades: filterGroup, filterOrder, filterType

938

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

1007

Campo Calculado utilizando BeanShell

  • Expressão SQL
936

Campo Calculado utilizando Expressão SQL

1121

Campo calculado - Caracterização

1095

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.

1216

Propriedades: gridFooterOper

1231
1413

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.

1239 951 1379

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”.

1152 1155 1156