📂 Dicionário de Dados (Data Dictionary)

Explica como definir a estrutura de dados (tabelas, campos, entidades) do add-on usando o arquivo metadados.xml.

O Dicionário de Dados é o coração do seu add-on. É onde você define a estrutura de dados da sua aplicação — tabelas, telas, menus e extensões de entidades nativas — de forma declarativa usando arquivos XML.

Este mecanismo garante que suas personalizações sejam armazenadas e manipuladas de maneira estruturada, segura e padronizada dentro do ecossistema Sankhya.


🗂️ Estrutura de Arquivos

Todos os arquivos do Dicionário de Dados devem ser criados dentro do diretório datadictionary, localizado em model/src/main/resources/.

Estrutura de pastas do Dicionário de Dados

💡 Boa Prática: Crie um arquivo XML separado para cada entidade principal (uma tabela, um menu, etc.). Isso torna a manutenção muito mais simples. Por exemplo, SGT_MINHATABELA.xml, SGT_MEUMENU.xml.


📄 Arquivo XML Base e o metadados.xsd

Todo arquivo de dicionário de dados deve seguir uma estrutura XML padrão que referencia o metadados.xsd. Este XSD (XML Schema Definition) é crucial, pois permite que sua IDE valide o arquivo e ofereça autocompletar, guiando o desenvolvimento.

Estrutura inicial:

<?xml version="1.0" encoding="iso-8859-1" ?>
<metadados xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="../.gradle/metadados.xsd">
           
    <!-- Suas definições de tabelas, menus, etc., vêm aqui -->

</metadados>
👍

IntelliSense na IDE: Com essa configuração, sua IDE (como o IntelliJ) fornecerá sugestões e documentação ao escrever o XML, bastando passar o mouse sobre as tags e atributos definidos no metadados.xsd.


🏛️ Estruturas de Dados Suportadas

Dentro da tag <metadados>, você pode definir diversas estruturas, conforme o metadados.xsd.

EstruturaTag XMLDescrição
Tabelas Novas<table />Define novas tabelas que serão criadas no banco de dados.
Tabelas Hierárquicas<treeTable />Define tabelas com estrutura de árvore (pai/filho).
Extensão de Tabelas Nativas<nativeTable />Estende tabelas que já existem no Sankhya Om com novos campos.
Views<view />Cria views de banco de dados.
Formulários Dinâmicos<dynamicForm />Cria telas de cadastro (formulários) baseadas em suas tabelas.
Menus<menu />Adiciona novas entradas de menu no sistema para acessar suas telas.
Telas (Custom UI)<ui />Registra telas personalizadas (feitas em XHTML/JSF) no menu.
Filtros<filters />Adiciona uma seção de filtros a um formulário dinâmico.

✨ Boas Práticas

  • Nomenclatura com Prefixo Único: Use um prefixo exclusivo para suas tabelas e campos (ex: SGT_ para o add-on "Super Gestão") para evitar conflitos com as tabelas nativas e de outros add-ons.
  • Organização: Separe as definições em arquivos lógicos. Exemplo: um arquivo para a tabela SGT_PRODUTOEXTRA, outro para o menu menu.xml.
  • Validação Contínua: Confie no XSD. Se a IDE apontar um erro no seu XML, corrija-o antes de tentar fazer o deploy.

🚫 Anti-Patterns (O que evitar)

  • Uso do PrefixoAD_ : Não use o prefixoAD_ . Ele é utilizado internamente pelo SankhyaOm para campos e tabelas adicionai criados via contrutor de Telas e Dicionário de dados.
  • "Monolito" XML: Colocar todas as definições (tabelas, menus, telas) em um único arquivo gigante. Isso dificulta a leitura, a manutenção e o trabalho em equipe.
  • Criar Tabelas para Campos Adicionais: Criar uma nova tabela (ex: SGT_INFOPARCEXTRA) apenas para guardar informações extras de um Parceiro é uma má prática. Isso complica consultas e a lógica de negócio. A abordagem correta é estender a tabela Parceiro com <nativeTable />.
  • Ignorar o XSD: Escrever o XML "no bloco de notas" sem a ajuda do metadados.xsd é uma receita para erros de sintaxe e estrutura que só serão descobertos em tempo de deploy.