Dicionário de Dados

Introdução ao Dicionário de Dados

O dicionário de dados é um dos componentes mais fundamentais da plataforma Sankhya, ele é composto por um conjunto de tabelas que provêm informações sobre as demais tabelas do banco de dados. Dessa forma, o dicionário de dados se configura como um repositório de metadados, armazenados em um banco de dados relacional, que descrevem e mapeiam a estrutura de dados do sistema, englobando informações sobre:

  • Tabelas
  • Campos
  • Ligações
  • Entidades
  • Propriedades
  • Regras de domínio

Incluindo por exemplo, descrições e possíveis valores para campos do sistema. Ele controla também a hierarquia de telas e restrições por licença.

Essa estrutura possibilita o uso de técnicas de programação table-driven, de forma que boa parte do sistema pode ser montada em tempo de execução, por componentes que usam as meta-informações do dicionário de dados como entrada.

Na Sankhya o Dicionário de dados é aplicado em pelos menos três frentes:

Documentação: Depois de compreendida a estrutura dos dados, o mapeamento também pode ser consumido como documentação, pois a sua estrutura contém informações sobre o nome, tipo, tamanho, ligações, ou seja, todos os metadados que podem ser utilizados para determinar o comportamento de componentes, persistência, entre outras coisas.

JAPE: Framework de persistência. Baseado no conjunto de meta informações o JAPE gera, dinamicamente, as estruturas SQL, como por exemplo: INSERT, UPDATE, DELETE e SELECT.

Dynaform: Framework para construção de telas. Baseado nos metadados, o Dynaform possibilita a criação dinâmica de telas sem nenhuma definição de código de backend e front-end.

Funções do Dicionário de dados

  • O sistema consume informações do dicionário de dados para montar suas telas
  • O dicionário de dados é atualizado quando melhorias ou novas implementações são realizadas, mantendo a integridade dos dados do sistema
  • Todo desenvolvedor pode usar o dicionário de dados como referência para obter informações sobre o banco de dados

Arquitetura do Dicionário de Dados

O dicionário de dados consiste no seguinte conjunto de tabelas:

  • TDDTAB
  • TDDCAM
  • TDDOPC
  • TDDPCO
  • TDDINS
  • TDDLIG
  • TDDLGC
  • TRDCON
  • TRDPCO
  • TRDFCO
  • TRDEVE
  • TDDIAC
  • TDDTABI18N
  • TDDCAMI18N
  • TDDOPCI18N
  • TDDINSI18N
  • TRDCONI18N
  • TDDI18N

A tabela abaixo apresenta a descrição de cada uma das tabelas do dicionário de dados e alguns dos seus campos e respectivos valores.

DER - Dicionário de dados

O diagrama a seguir apresenta as entidades do dicionário de dados e suas relações entre si, assim como seus atributos.

1714

DER - Dicionário de dados

Diagrama em alta resolução disponível neste link.

O diagrama a seguir apresenta as entidades do dicionário de dados e suas relações entre si, assim como seus atributos.

TDDTAB

A TDDTAB contém informações relativas ao mapeamento das tabelas. A chave natural desta tabela é NOMETAB.

CampoDescrição
NOMETABNome da tabela.
DESCRTABDescrição da tabela.
TIPONUMERACAOTipo de numeração.

A - Automática
M - Manual
T - Tabela auxiliar
NUCAMPONUMERACAOLigação com a TDDCAM para os metadados do campo.
ADICIONALDefine se a tabela é adicional. Usado para artefatos personalizados.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDCAM

Contém informações relativas ao mapeamento dos campos das tabelas. A chave natural desta tabela é NOMETAB e NOMECAMPO.

CampoDescrição
NUCAMPOInformação de controle interno. Utilizado como identificador único de registro.
NOMETABNome da tabela.
NOMECAMPONome do campo.
DESCRCAMPODescrição do campo.
TIPCAMPODefine o tipo do campo.

B - Blob: Usado para imagens
C - Clob: Usado para texto longo
D - Date: Usado para datas
F - Float: Usado para valores decimais
I - Integer: Usado para valores inteiros
H - DateTime: Usado para data/hora
S - String: Usado para texto
T - Time: Usado para hora
EXPRESSAOUsado para definição de campos calculados. Também pode ser usado para definição de valores padrões em campos não calculados. Podemos criar dois tipos de expressões:

1 - SQL
2 - BeanShell
PERMITEPESQUISAIndica se o campo permite pesquisa. Geralmente usado dentro de componentes de pesquisa.
CALCULADODefine se o campo é calculado. Campos calculados não existem fisicamente nas tabelas, ou seja, não são persistidos.
PERMITEPADRAOIndica se o campo permite definição de valor padrão. Geralmente usado na configuração de formulários.
APRESENTACAODefine o campo de apresentação da tabela. O campo de apresentação geralmente é usado em campos de pesquisa e nomes de abas relacionadas a ligações de instâncias.
ORDEMDefine a ordenação do campo. Geralmente usado para ordenar o campo em grades e formulários.
VISIVELGRIDPESQUISADefine a visibilidade do campo na grade de pesquisa. Geralmente usado em componentes de pesquisa.
TIPOAPRESENTACAODefine o tipo de apresentação do campo.

A - Arquivo
C - Checkbox
H - Formatação HTML
I - Imagem
M - Múltiplos arquivos
O - Lista de opções
P - Padrão
T - Caixa de texto
TAMANHODefine o tamanho do campo.
ADICIONALDefine se o campo é adicional. Usado para artefatos personalizados.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDOPC

Contém informações relativas ao mapeamento das opções dos campos.

CampoDescrição
NUCAMPOInformação de controle interno. Utilizado como identificador único de registro e chave estrangeira para TDDCAM.
OPCAODefine, de forma descritiva, a opção do campo.
VALORDefine o valor da opção.
PADRAODefine a opção padrão.
ORDEMDefine a ordenação da opção.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDPCO

Contém informações relativas ao mapeamento de propriedades dos campos.

CampoDescrição
NUCAMPOInformação de controle interno. Utilizado como identificador único de registro e chave estrangeira para TDDCAM.
NOMEExistem diversas propriedades para funcionalidades diversas.

APP_PROFILE: Permite definir uma licença de uso. O campo ficará visível apenas se o cliente possuir a licença.

cantrim: Define o valor vazio para os campos do tipo String, caso o seu valor seja nulo. O valor esperado é (true/false).

cleanOnCopy: Define se o campo será copiado pela funcionalidade de duplicação do dataset.

dateOnly: Usado para campos do tipo Data. Força o uso da data sem horas.

encodedtransport: Força o encript do dado antes de apresentar ao usuário.

gridFooterOper: Permite criar um rodapé de coluna. Pode assumir os valores: 1 - count: Contador de linhas; first: Valor da primeira linha; last: Valor da última linha; sum: Totalizador da coluna.

metadataInterceptor: Esta propriedade permite definir um inteceptador de metados em Java. O valor esperado é o nome completo da classe.

nuCasasDecimais: Permite definir a quantidade de casas decimais para os campos do tipo FLOAT. O valor esperado é numérico.

readOnly: Define que o campo é apenas leitura. O valor esperado é (true/false).

requerido: Define a obrigatoriedade do campo. O valor esperado é (true/false).

UIGroupName: Permite definir um agrupador de campos. O valor esperado é o Título do Grupo.

UITabName: Permite definir uma aba para o campo. O valor esperado é o Título da Aba.

UIType: Permite forçar um tipo específico de componente para o campo. O valor esperado é (PASSWORD, CEP, Phone e CGCCPF).

useSelectDistinct: Força a criação de um campo de pesquisa. A pesquisa será realizada na própria tabela de origem do campo (SELECT DISTINCT CAMPO FROM TABELA). O valor esperado é (true/false).

visivel: Define a visibilidade do campo. O valor esperado é (true/false).

_Propriedades para criar filtro padrão nas telas Dynaform:


filterDefaultValue: Permite informar um valor padrão.

filterGroup: Permite criar um grupo de filtros.

filterLabel: Define o label do filtro.

filterOrder: Define a ordem do campo filtro.

filterRequired: Define a obrigatoriedade do filtro.

filterSql: Define uma expressão SQL para o filtro.

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.

Propriedades para definição de metadados adicionais (rowmetada).

rmp: Define o provedor de metadados.

rm_precision: Define a quantidade de casas decimais. Um caso de uso é a quantidade de casas decimais do produto na Central de Notas.

rm_controle: Define o tipo de controle. Um caso de uso é o controle adicional de estoque do produto na Central de Notas.
VALORValor da propriedade. Cada propriedade possui uma definição particular que pode variar de simples informações como “true/false” até informações complexas como querys, ou caminhos de classes e etc.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDINS

Contém informações relativas ao mapeamento de instâncias. A chave natural e única desta tabela é a NOMEINSTANCIA.

CampoDescrição
NUINSTANCIAInformação de controle interno. Utilizado como identificador único de registro.
NOMETABNome da tabela.
NOMEINSTANCIANome da instância.
DESCRINSTANCIADescrição da instância.
RAIZDefine se a instância é a principal. Podemos criar uma instância filha de outra instância.
ATIVODefine se a instância está ativa.
EXPRESSAOPermite definir um critério que será usado como filtro na consulta.
ADICIONALDefine se o campo é adicional. Usado para artefatos personalizados.
RESOURCEIDDefine o identificador único de tela. Usado para criar lançador de tela, geralmente telas de cadastro.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDLIG

Contém informações relativas ao mapeamento das ligações entre as instâncias. Este processo é usado para
mapear FKs para se tornar um campo de pesquisa dentro das telas da plataforma.

CampoDescrição
TIPLIGACAODefine o tipo de ligação. Ligações LEFT JOIN são sempre NÃO obrigatórias. Porém é possível forçar que a ligação seja obrigatória através do campo OBRIGATORIA.

I - INNER JOIN
L - LEFT JOIN
EXPRESSAOUtilizado para definir uma expressão de ligação entre origem e destino.

Deve ser uma expressão do tipo SQL. Por exemplo:

Na ligação Parceiro>CabecalhoNotaModelo podemos definir para trazer apenas notas do tipo Z (TIPMOV = 'Z').

Também é utilizado para definir outras estruturas via @ref-param:

show-on-ui: Define se a ligação será visível. Geralmente usado para que a aba não seja criada nas telas dynaform.

description: Permite definir uma nova descrição para a ligação.

force-one-to-one: Força uma ligação 1:1 entre duas instâncias.

include-in-deep-copy: Determina a ligação deve ser copiada pela função de duplicar registro do dataset.

merge-on-root: Permite manipular os dados de duas tabelas ligadas 1:1 como se fossem apenas uma. Por exemplo Parceiro->ComplementoParc.

add.tables: Define uma tabela de ligação. Deve ser usado com link.expression.

link.expression: Define a expressão de ligação.
INSERIRDetermina o CASCADE da ligação para INSERT. Ou seja, ao incluir o registro pai também existe a possibilidade de incluir o filho.
ALTERARDetermina o CASCADE da ligação para UPDATE. Ou seja, na alteração do registro pai também existe a possibilidade de alterar o filho.
EXCLUIRDetermina o CASCADE da ligação para DELETE. Ou seja, ao excluir o registro pai também existe a possibilidade de excluir o filho.
OBRIGATORIADetermina se a ligação é obrigatória. Por exemplo, na ligação CabecalhoNota->Parceiro existe essa obrigatoriedade porque o Parceiro é fundamental no lançamento de notas.
CONDICAODefine uma expressão de ligação entre origem e destino. Deve ser uma expressão do tipo BeanShell.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDLGC

Contém informações relativas ao mapeamento dos campos de ligação entre as instâncias.

CampoDescrição
NUINSTORIGInformação de controle interno. Utilizado para ligação do campo de origem.
NUCAMPOORIGInformação de controle interno. Utilizado para ligação do campo de origem.
NUINSTDESTInformação de controle interno. Utilizado para ligação do campo de destino.
NUCAMPODESTInformação de controle interno. Utilizado para ligação do campo de destino.
ORIG_OBRIGATORIADefine se o campo deve ser preenchido para completar a ligação. Por exemplo:

Na ligação de CabecalhoNota->OrdemCarga. Para vincular uma ordem de carga a nota é necessário informar também a empresa, pois a ligação completa é (CODEMP, ORDEMCARGA).
ORDEMCampo obsoleto. Atualmente não está sendo utilizado para nenhuma funcionalidade.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TRDCON

Contém informações relativas aos controles de menu.

CampoDescrição
NUCONTROLEInformação de controle interno. Utilizado como identificador único de registro.
DESCRCONTROLEDescrição do controle. Por exemplo, o nome da tela, o nome do item de menu.
TIPOCONTROLEDefine o tipo de controle.

Controles usados:
FB - Frame Builder
MN - Item de Menu
DS - Tela
PL - Painel

Controles obsoletos:
CA - Controle Abas
BT - Botão
GR - Grade
LK - Link
FS - Grupo (Field Set)
PG - Página
AB - Aba
CP - Campo
TV - Texo
TIPOFILHOSDefine o tipo de controle dos controles filhos. Possui as mesma opções de TIPOCONTROLE.
ORIFILHOSTipo de orientação dos controles filhos. Esta informação está obsoleta.

H - Horizontal
V - Vertical
NOMENome do controle. Deve ser um identificador único. No caso de telas, geralmente, usamos o mesmo valor do resourceID.
ADICIONALDefine se o controle é adicional. Usado para artefatos personalizados.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TRDPCO

Contém informações relativas às propriedades dos controles.

CampoDescrição
NUCONTROLEInformação de controle interno. Utilizado como identificador único de registro.
NOMEDefine o nome da propriedade. Existem diversas propriedades para funcionalidades diversas.

resourceID: Define o identificador único de tela.

resourceIDAcessos: Permite definir um resourceID exclusivo para controle de acessos. Quando informado, o resourceID não será utilizado para tal controle.

entityName: Permite definir o nome da instância principal de uma determinada tela. Em telas dynaform esse atributo será utilizado para disponibilização de botões de ação e relatórios personalizados.

contexto: Define o contexto da tela ou item de menu. Geralmente está relacionado ao módulo. Por exemplo: mge, mgecom, mgecontab, mgecot, mgectbz, mgefin.

MI_S4W8LB: Permite definir o código da licença necessária para uso da tela.

paramMenuAtivo: Permite definir uma estrutura de verificação de parâmetro para ativar uma determinada tela.

showMenu: Propriedade do tipo boolean que permite inativar um item de menu ou tela. Existem duas situações mais comuns:
1 - Telas descontinuadas.
2 - Telas que podem ser abertas apenas por outras telas.

accessValidator: Permite definir um validador de acessos personalizado. Um caso de uso é a Central de Notas (CentralNotasAccessValidator).

icon-info: Permite definir o caminho da imagem do módulo (framebuilder).

onlyHtml5: Permite definir que determinada tela será aberta apenas no layout HTML5.

hideCrudOperations: Propriedade do tipo booleana que permite desabilitar as configurações de acessos de CRUD na tela de Acessos. Um caso de uso é a tela Gerente On-Line - GOL.
VALORDefine o valor da propriedade. Cada propriedade possui uma definição particular que pode variar de simples informações como “true/false” até informações complexas como querys, ou caminhos de classes e etc.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TRDFCO

Contém o mapeamento das ligações dos controles.

CampoDescrição
NUCONTROLEInformação de controle interno. Utilizado como identificador único de registro.
NUCONTROLEFILHOInformação de controle interno. Utilizado como identificador único de registro.
ORDEMDefine a ordem do controle filho.
ATIVOPermite ativar ou inativar um controle filho.
ADICIONALDefine se o controle é adicional. Usado para artefatos personalizados.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TRDEVE

Contém informações relativas aos eventos de controle.

CampoDescrição
NUCONTROLEInformação de controle interno. Utilizado como identificador único de registro.
ONCLICKPermite definir o lançador da tela. Geralmente será um link no formato:

Tela 100% dynaform:
${dynaform:NomeDaInstancia}

Ex: ${dynaform:Bairro}

Demais telas:
/contexto/NomeDaTela.xhtml5?mgeSession=${mge.session.id}&resourceID=${resourceID}

Ex: /mgefin/MovimentacaoFinanceira.flex?mgeSession=${mge.session.id}&resourceID=${resourceID}
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDIAC

Contém informações relativas aos acessos especiais de controle.

CampoDescrição
SEQUENCIAInformação de controle interno.
IDACESSODefine o identificador para validação do acesso. Neste caso, será o resourceID da tela.
SIGLADefine o identificador do acesso. Não pode repetir para o mesmo IDACESSO.
DESCRICAODescrição do acesso. Essa informação será visualizada na tela de Acessos para a tela definida em IDACESSO.
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDTABI18N

Internacionalização para a descrição das tabelas: TDDTAB.DESCRTAB

CampoDescrição
NOMETABDefine o nome da tabela.
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDCAMI18N

Internacionalização para a descrição dos campos: TDDCAM.DESCRCAMPO

CampoDescrição
NOMETABDefine o nome da tabela.
NOMECAMPODefine o nome do campo.
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDOPCI18N

Internacionalização para as opções de campo (TDDOPC.OPCAO)

CampoDescrição
NOMETABDefine o nome da tabela.
NOMECAMPODefine o nome do campo.
VALORDefine o valor da opção.
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDINSI18N

Internacionalização para a descrição das instâncias (TDDINS.DESCRINSTANCIA)

CampoDescrição
NOMEINSTANCIADefine o nome da instância
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TRDCONI18N

Internacionalização para a descrição dos controles (TRDCON.DESCRCONTROLE)

CampoDescrição
NOMECONTROLEDefine o nome do controle.
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

TDDI18N

Internacionalização para abas, agrupadores de campo e qualquer outra situação não prevista nas demais tabelas de internacionalização.

CampoDescrição
CHAVEDefine o identificador único.
LOCALEDefine o idioma.
TEXTOTexto internacionalizado de acordo com o idioma definido (LOCALE).
CONTROLEUsado internamente pelo atualizador (WPM ou Gerenciador de pacotes).
NUMOSCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.
LIBERADOCampo obsoleto. Antigamente era usado para liberação dos artefatos para produção.

Consulta ao Dicionário de Dados

Consulta com SGBD

Para consultar o dicionário de dados diretamente pelo SGBD, use instruções SQL para recuperar informações sobre as tabelas e seus campos:

SELECT * FROM TDDTAB;
831

Consulta utilizando SGBD - SQL Developer

Consulta com DWFDesigner

Para consultar o dicionário de dados pelo DWFDesigner, acesse Tabelas > Abrir Tabela... e pesquise pela tabela em questão.

581

Consulta pelo DWF Designer

🚧

Atenção

A alteração indevida de dados das tabelas do dicionário de dados pode comprometer a integridade e desempenho do banco de dados.

Recursos avançados do Dicionário de dados

Confira neste link recursos avançados do dicionário de dados

Como tirar dúvidas?

Para tirar dúvidas e compartilhar informações, use a sala Dicionário de Dados da comunidade Sankhya Developer.