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 enumerado FacturaField que 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