📂 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/.
💡 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
metadados.xsdTodo 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 nometadados.xsd.
🏛️ Estruturas de Dados Suportadas
Dentro da tag <metadados>, você pode definir diversas estruturas, conforme o metadados.xsd.
| Estrutura | Tag XML | Descriçã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 menumenu.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 Prefixo
AD_: 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 tabelaParceirocom<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.
Updated 11 days ago
