⚡ 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.