Construye to propio generador de código con MOSKitt SDK
-
Upload
jose-manuel-garcia-valladolid -
Category
Technology
-
view
699 -
download
4
Transcript of Construye to propio generador de código con MOSKitt SDK
Construye tu propio generador de código con MOSKitt SDKConstruye tu propio generador de código con MOSKitt SDK
Jose Manuel García Valladolid
Héctor Iturria Sánchez
Metamodelo DataForms
El usuario interactúa con el sistema a través de un Editor de formularios.
Este editor de formularios es una ventana con título que contiene un conjunto de páginas. Cada página tiene una etiqueta que le permite al usuario identificarla.
El editor proporcionará algún mecanismo para que el usuario pueda conmutar entre páginas accediendo al contenido de cada una de ellas.
Plantillas Xpand
Importa una definición de modelo
Carga una extensión
Define una sección de una plantilla para una clase Java simple que es aplicada a un elemento del tipo Entity.
Directivas básicas Xpand
DEFINE: definición de una plantilla. Tiene un nombre y se aplica a un tipo de elemento específico (incluidas las colecciones).
IMPORT: da acceso a las plantillas y metamodelos definidos en un espacio de nombres dado.
EXTENSION: carga extensiones en lenguaje XTend.
Directivas para control de flujo
EXPAND: se usa para ejecutar un bloque DEFINE para un elemento del tipo especificado.
FOR y FOREACH (dentro de EXPAND): permiten aplicar una definición de una plantilla a una colección de elementos.
FOR → Ejecuta la plantilla para el resultado de la expresión.
FOREACH → Ejecuta la plantilla para todos los elementos de la colección especificada. Es posible indicar un separador.
Otras directivas
FILE: define una sección en la cual todo el texto generado por las directivas existentes será almacenado en el fichero especificado.
LET: permite definir variables y su contenido.
ERROR: permite detener el procesamiento de las plantillas.
REM: permite la inclusión de comentarios en nuestras plantillas.
Funciones interesantes
Operaciones sobre collecciones:
Select: books.select(b | b.isReserved = false);
Collect: books.collect(b.title | b.isReserved = false);
SortBy: books.sortBy(b.author);
Size: books.size
Exists: books.exists(b | b.isReserved = false);
Get: books.get(1);
Otras operaciones
IsInstance: library::Book.isInstance(selectedObject)
Actividad 1
Uso del gestor de transformaciones de MOSKitt.
Abrir el modelo ClubUI.dataforms y evaluar el diseño de interfaz de usuario que propone.
Lanzar la transformación a partir del modelo DataForms de ejemplo.
Comprobar el resultado. Verificar que la aplicación HTML generada concuerda con el modelo DataForms de entrada.
Actividad 2
Modelar una página nueva con DataForms
La página contendrá un formulario tipo registro para los atributos de la clase Socio del modelo de dominio UML2.
Añadir, además, 2 acciones al formulario, “Guardar” y “Cancelar”.
Ejecutar la transformación y comprobar el resultado.
Actividad 3
Dar soporte a la transformación para el tipo de datos uml::Boolean
Modificar la plantilla XPAND “field.xpt” para incluir el soporte a uml::Boolean.
El control HTML asociado a este tipo de dato será un CheckBox. Su código HTML es: <input name=”nombreControl” type=”checkbox”/>
Crear en el modelo UML2 club.uml un atributo nuevo a la clase Participacion llamado enVenta de tipo uml::Boolean.
Crear un campo nuevo en formulario de la página de
Actividad 4
Dar soporte a la transformación para el tipo de datos uml::Enumeration
Modificar la plantilla XPAND “field.xpt” para incluir el soporte a uml::Enumeration.
El control HTML asociado a este tipo de dato será un ComboBox. Su código HTML es: <select name=”nombreControl”> <option name=”opcion”>TituloOpcion</option> </select>
Ejecutar la transformación y comprobar que el campo TipoSocio está soportado en el resultado.
Actividad 5
Dar soporte al patrón de visualización VisualizationPattern de un Form en DataForms
Modificar las plantillas necesarias para que la disposición de los campos del formulario sea:Registro: disposición actual.
Tabular: se creará una tabla en la que la primera línea contendrá los títulos de las columnas, que serán las etiquetas de los campos. Después en una segunda línea contendrá cada uno de los campos.
Realizar cambios en el modelo DataForms de entrada y comprobar la transformación.