Acesso Colaboradores

O que é um Dicionário de Dados?

Publicado em por Gustavo Mauricio de Barros

O que é um Dicionário de Dados? O que é um Dicionário de Dados?

⚡ Introdução

Se você trabalha com desenvolvimento, provavelmente já precisou repetidamente criar vários cadastros semelhantes em diversas telas. O que leva a tempo gasto com essa repetição e a chance de erros ao replicar seu código. Tivemos uma situação muito parecida na JJConsulting.

⚠️ Nosso problema

Há algum tempo, desenvolvemos um produto e começamos a implementá-lo em diversos clientes. Cada um deles exigia campos específicos e regras de negócio personalizadas. Inicialmente, replicamos o código para cada cliente, adaptando-o às suas necessidades. Essa abordagem revelou-se rapidamente insustentável.

Decidimos então parametrizar as regras dentro de um único sistema, permitindo ativar ou desativar campos e funcionalidades conforme necessário. Contudo, à medida que mais clientes eram adicionados, a complexidade da parametrização crescia exponencialmente, tornando a manutenção do sistema inviável.

Buscando uma solução mais eficaz, exploramos alternativas na comunidade open-source e descobrimos o conceito de Dicionário de Dados. Grandes empresas de ERP utilizam essa abordagem para permitir que cada cliente personalize o sistema conforme suas necessidades, mantendo uma base de código única.

Não encontramos uma solução open-source em .NET que atendesse às nossas necessidades de configurar campos e regras de negócio de forma eficiente. Assim, decidimos criar nossa própria biblioteca: JJMasterData. Inicialmente, parecia uma ideia ousada, mas o resultado superou nossas expectativas. Adotamos o JJMasterData em diversos sistemas, e sua flexibilidade e eficiência transformaram nossa abordagem de desenvolvimento de software.

📘 O que é um dicionário de dados?

O Dicionário de Dados é um repositório centralizado que documenta tudo sobre os dados de um sistema: nome do campo, tipo, tamanho, regras de validação, origem, relacionamentos, índice e etc. Ele é o contrato técnico que alinha seu banco de dados com sua regra de negócio.

Mas o dicionário sozinho não resolve tudo. Como geramos telas de cadastro a partir do dicionário de dados? É aí que entra o JJMasterData.

O JJMasterData é uma biblioteca open-source escrita em .NET que permite criar CRUDs, ou seja, formulários que podem ler, criar, alterar ou deletar dados, rapidamente a partir dos dicionários de dados, além de outras funcionalidades, como exportação e importação de dados. Além disso, é possível gerar endpoints em uma Web API para se integrar com outros sistemas.

Também quando necessário, é possível escrever código customizado para o JJMasterData que adapta os formulários gerados a sua própria regra de negócio.

🔧 Como funciona o JJMasterData

O JJMasterData é uma ferramenta de gerenciamento de dados que armazena a estrutura das informações do seu sistema e gera automaticamente as telas de cadastro, eliminando a necessidade de codificar cada detalhe manualmente.

Tudo começa com o preenchimento do dicionário de dados, onde você define as tabelas do sistema, seus campos, tipos de dados, validações e relacionamentos. Essas definições são salvas em uma tabela central — como se fosse uma "tabela das tabelas" — que serve como base para a geração dinâmica dos nossos formulários.

Quando uma tela de cadastro precisa ser exibida, o JJMasterData consulta esse dicionário e monta a interface de forma automática. Alterações, como a inclusão de um novo campo ou a modificação de uma regra, são refletidas instantaneamente na interface, sem necessidade de recompilar o sistema.

Além disso, o JJMasterData permite a inclusão de regras de negócio personalizadas, como validações específicas ou cálculos automáticos, tudo sem alterar o código-fonte principal. Isso acelera o desenvolvimento, facilita a manutenção e reduz significativamente a ocorrência de erros.

Separamos tudo em 3 grandes camadas, a camada responsável em se comunicar com o banco de dados que chamamos de JJMasterData.Commons. Nela abstraímos a geração de scripts SQL por exemplo.

Em seguida, temos o JJMasterData.Core, onde se renderiza o HTML dos formulários após se ter os dados recuperados. Nesse assembly temos nosso próprio DSL (Domain Specific Language) em C# para se montar os HTMLs dos componentes.

Por último, temos o JJMasterData.Web, nossa Razor Class Library. As rotas localizadas em /DataDictionary são responsáveis por gerir nossos dicionários, onde são gravados na nossa tabela central em formato JSON. Também se pode gravar eles em um banco NoSQL por exemplo, caso implemente a interface responsável por gravar os dicionários. Já a rotas que ficam em /MasterData são responsáveis por renderizar os formulários para o usuário final. O permissionamento delas pode ser feito usando o próprio ASP.NET Core na inicialização na aplicação

🌟 Vantagens de usar o JJMasterData

Com nossa biblioteca, você tem mais agilidade, flexibilidade e controle sobre os dados e interfaces do seu sistema.

Na dúvida em usar? Veja algumas vantagens:

  • Evita duplicação de código
  • Geração automática de telas de cadastro baseadas no dicionário
  • Adaptação rápida a novas regras de negócio sem alterar a base de código
  • Redução drástica no tempo de desenvolvimento de CRUDs
  • Facilidade de manutenção e evolução da aplicação
  • Integração com outros sistemas de maneira fácil
  • Suporte a importação e exportação de dados para diferentes formatos de arquivo

O próprio conteúdo deste blog é gerido por um formulário do JJMasterData 🚀.

A maior vantagem na minha opnião, é a junção da documentação da estrutura do banco com o desenvolvimento rápido sem re-compilar a aplicação. Isso agiliza muito o desenvolvimento, tanto para a equipe entender o sistema quanto para se criar melhorias rapidamente.

🐙 Veja mais no GitHub

Trabalho no desenvolvimento da biblioteca junto com o Lucio Pelinson. O código é aberto, e você pode acessar, contribuir ou até mesmo realizar um fork do JJMasterData conforme suas necessidades. Acesso nosso repositório oficial no GitHub para saber mais.

← Voltar ao ínicio