Conceptos de la plataforma MADS V5
La plataforma
MADS V5 se distribuye como artefactos Maven bajo el grupo madsv5. Los más importantes son:
| Artefacto | Qué aporta |
|---|---|
platform |
POM padre raíz: fija las versiones de todas las dependencias |
mads-module |
POM padre de los módulos de aplicación |
mads-service |
POM padre de los módulos de servicios web |
mads-comlib |
Biblioteca común: modelo de entidades, interfaz de usuario, framework de acciones |
mads-w3lib |
Componentes web: servlets, JSON, subida de ficheros, Excel |
mads-jpalib |
Persistencia JPA con EclipseLink y conexión a bases de datos |
mads-reporting |
Informes con Pentaho Reporting |
mads-jtest |
Utilidades de test JUnit para módulos MADS |
Módulos
Un módulo es un proyecto Maven que agrupa una funcionalidad completa: su modelo de datos, su lógica, sus pantallas y sus textos. Las aplicaciones se componen de varios módulos, y la plataforma incluye módulos reutilizables como security (usuarios y permisos) o parameters (parámetros de configuración).
Cada módulo tiene un fichero .mads en la raíz que identifica su nombre, versión, descriptor y runtime por defecto, y sus recursos en src/main/res:
| Carpeta | Contenido |
|---|---|
xml/ |
Metadatos: descriptor, dominios, esquema de base de datos, textos, parámetros y claves de acceso |
txt/ |
Textos traducidos, un fichero por idioma (por ejemplo _es, _en, _ca) |
run/ |
Runtimes y lanzadores para ejecutar el módulo |
Los ficheros XML se validan contra los esquemas publicados en mads.sivicom.cat/xsd, así que el editor detecta errores de estructura mientras escribes.
Metadatos
- Descriptor: identidad del módulo, paquete base, ficheros de esquema y textos asociados.
- Dominios: tipos de datos de negocio reutilizables (longitudes, formatos, listas de valores válidos) que comparten todas las columnas que los usan.
- Esquema de base de datos: tablas, columnas, claves y vistas del módulo.
- Textos: literales de la interfaz, con su traducción por idioma.
- Parámetros: valores de configuración del módulo, con su diccionario.
- Claves de acceso: permisos que el módulo de seguridad asigna a usuarios y roles.
El modelo generado
mads generate module lee los metadatos y genera el código Java del módulo. Por cada entidad obtienes:
- La entidad JPA (por ejemplo
Factura). - La clase Peer (
FacturaPeer), con el acceso a datos. - La clase Filter (
FacturaFilter), con un enumeradoFacturaFieldque contiene una constante por columna.
Ese enumerado es la clave de la calidad de MADS: el código de los módulos se refiere a las columnas con FacturaField.estado y nunca con el texto "FAC_ESTADO". Si una columna cambia o desaparece, el código que la usa deja de compilar y el error se corrige antes de llegar a producción.
La misma generación produce los textos en todos los idiomas, el diccionario de parámetros y, con mads generate dart, el modelo de entidades para apps Flutter.
Runtimes y apps
- Un runtime es una configuración de ejecución del módulo (conexión, entorno, opciones). Un módulo puede tener varios —desarrollo, pruebas, producción— y uno por defecto.
- Una app es una aplicación que se crea para un módulo, con su propio versionado, y que se puede publicar y distribuir.
- WAPP es el servicio de Sivicom desde el que se publican módulos y apps (
mads pub module,mads pub app) y desde el que los usuarios descargan y ejecutan las apps (mads run app).
Plataformas de destino
| Destino | Cómo |
|---|---|
| Escritorio | Interfaz Swing con el aspecto moderno de MADS |
| Servicios web | Módulos de servicio sobre mads-service y mads-w3lib |
| Móvil y multiplataforma | Paquete mads_flutter y el modelo Dart generado |