Empleados

¿Qué es un diccionario de datos?

Published in por Gustavo Mauricio de Barros

¿Qué es un diccionario de datos? ¿Qué es un diccionario de datos?

⚡ Introducción

Si trabajas en desarrollo de software, probablemente has tenido que crear formularios similares repetidamente en distintas pantallas. Esta repetición consume tiempo y aumenta la posibilidad de errores. En JJConsulting pasamos por algo muy parecido.

⚠️ Nuestro Problema

Hace un tiempo desarrollamos un producto y empezamos a implementarlo en varios clientes. Cada uno requería campos y reglas de negocio específicas. Al principio, replicamos el código para cada cliente, adaptándolo a sus necesidades. Este enfoque pronto se volvió insostenible.

Decidimos entonces parametrizar las reglas dentro de un único sistema, permitiendo activar o desactivar campos y funcionalidades según fuera necesario. Sin embargo, a medida que se agregaban más clientes, la complejidad de la parametrización crecía exponencialmente, haciendo que el mantenimiento del sistema fuera inviable.

Buscando una solución más eficaz, exploramos alternativas open-source y descubrimos el concepto de Diccionario de Datos. Grandes empresas de ERP usan este enfoque para permitir que cada cliente personalice el sistema a su medida, manteniendo una única base de código.

No encontramos ninguna solución open-source en .NET que cumpliera con nuestras necesidades de configurar campos y reglas de negocio de forma eficiente. Por eso decidimos crear nuestra propia biblioteca: JJMasterData. Al principio parecía una idea arriesgada, pero el resultado superó nuestras expectativas. Lo hemos adoptado en varios sistemas y su flexibilidad y eficiencia transformaron nuestra forma de desarrollar software.

📘 ¿Qué es un Diccionario de Datos?

El Diccionario de Datos es un repositorio centralizado que documenta todo sobre los datos del sistema: nombre del campo, tipo, tamaño, validaciones, origen, relaciones, índices, etc. Es el contrato técnico entre la base de datos y las reglas de negocio.

Pero el diccionario por sí solo no resuelve todo. ¿Cómo generamos los formularios a partir del diccionario? Ahí es donde entra JJMasterData.

JJMasterData es una biblioteca open-source en .NET que permite crear CRUDs — es decir, formularios para leer, crear, actualizar y eliminar datos — rápidamente a partir de diccionarios de datos. También ofrece funcionalidades como importación y exportación de datos, e incluso permite generar endpoints para una Web API para integrarse con otros sistemas.

Cuando es necesario, también se puede escribir código personalizado en JJMasterData para adaptar los formularios a las reglas de negocio específicas.

🔧 Cómo Funciona JJMasterData

JJMasterData es una herramienta de gestión de datos que guarda la estructura de información de tu sistema y genera automáticamente las pantallas de formularios, sin necesidad de programarlas manualmente.

Todo comienza con el llenado del diccionario de datos, donde defines las tablas, campos, tipos, validaciones y relaciones. Estas definiciones se guardan en una tabla central — como una “tabla de las tablas” — que sirve como base para la generación dinámica de formularios.

Cuando se necesita mostrar un formulario, JJMasterData consulta ese diccionario y construye la interfaz de forma automática. Los cambios, como la inclusión de un nuevo campo o la modificación de una regla, se reflejan al instante sin recompilar la aplicación.

JJMasterData permite incluir reglas de negocio personalizadas, como validaciones específicas o cálculos automáticos, sin modificar el código fuente principal. Esto acelera el desarrollo, facilita el mantenimiento y reduce errores.

Todo se separa en 3 capas principales: la capa que se comunica con la base de datos, llamada JJMasterData.Commons, donde abstraemos generación de scripts SQL.

Luego tenemos JJMasterData.Core, donde se renderiza el HTML de los formularios usando nuestro propio DSL en C#.

Finalmente, está JJMasterData.Web, nuestra Razor Class Library. Las rutas en /DataDictionary gestionan los diccionarios, que se guardan en una tabla central en formato JSON (o en una base NoSQL si se implementa la interfaz). Las rutas en /MasterData renderizan los formularios finales. Se puede usar ASP.NET Core para configurar los permisos.

🌟 Ventajas de Usar JJMasterData

Con nuestra biblioteca tendrás más agilidad, flexibilidad y control sobre los datos y las interfaces.

¿Todavía con dudas? Mira estas ventajas:

  • Evita duplicación de código
  • Generación automática de formularios desde el diccionario
  • Adaptación rápida a nuevas reglas de negocio sin cambiar el código fuente
  • Reducción drástica en el tiempo de desarrollo de CRUDs
  • Facilidad de mantenimiento y evolución
  • Integración sencilla con otros sistemas
  • Soporte para importar y exportar datos en varios formatos

Este mismo blog está gestionado con un formulario creado en JJMasterData 🚀.

La mayor ventaja, en mi opinión, es la combinación entre documentación estructural y desarrollo ágil sin recompilar. Eso acelera la comprensión y mejora continua del sistema.

🐙 Ver Más en GitHub

Trabajo en esta biblioteca junto a Lucio Pelinson. El código es abierto, y puedes acceder, contribuir o hacer un fork según tus necesidades. Visita nuestro repositorio oficial en GitHub para más información.

← Volver arriba