Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Moment Manual v20070321
Moment Manual v20070321
Manual de usuario.
Abel Gómez
Pascual Queralt
Artur Boronat
José A. Carsí
Isidro Ramos
1. Tabla de contenidos.
2. Índice de figuras...................................................................................................... 5
3. Convenciones utilizadas.......................................................................................... 7
3.1. Terminología empleada................................................................................... 7
3.2. Convenciones de formato. ............................................................................... 7
3
MOMENT
11. Referencias............................................................................................................ 53
4
Notas de la versión 20070321
2. Índice de figuras.
5
MOMENT
6
Notas de la versión 20070321
3. Convenciones utilizadas.
7
Notas de la versión 20070321
4. Instalación de MOMENT.
4.1. Requisitos.
4.1.1. Maude 2.2 o superior.
4.2. Instalación.
En el directorio de releases del ftp de MOMENT [5] se suministran
todos los ficheros necesarios para la instalación de MOMENT 1 . Estos son:
1 En el FTP sólo se incluye la versión de eclipse para Windows. En Linux o MacOSX el proceso de
instalación es similar, únicamente sería necesario descargar el correspondiente fichero «eclipse-
SDK-3.2.1-*plataforma*.*ext*» para la plataforma deseada desde [10].
9
MOMENT
10
Notas de la versión 20070321
11
MOMENT
Figura 7. Licencias.
12
Notas de la versión 20070321
13
Notas de la versión 20070321
5. Definición de metamodelos.
Identificador 2 : [a–zA–Z]([a–zA–Z0–9])*
15
MOMENT
16
Notas de la versión 20070321
Para evitar tener que regenerar los plug-ins cada vez que se
realizan modificaciones sobre los metamodelos, la herramienta MOMENT
proporciona un atajo para registrar los metamodelos en EMF
directamente, a partir del fichero «*.ecore». Para ello, se deberá hacer clic
derecho sobre el fichero *.ecore, y se seleccionará la opción «MOMENT
Extensions → Register model».
17
Notas de la versión 20070321
19
MOMENT
20
Notas de la versión 20070321
7. Definición de transformaciones.
Identificador: [a–zA–Z]([a–zA–Z0–9])*
transformation umlToRdbms (
ecoreDomain:http:\/\/www.eclipse.org/emf/2002/Ecore,
target rdbmsDomain:http:\/\/\/es.upv.dsic.issi/moment/rdbms
)
transformation umlToRdbms(
ecoreDomain1:http:\/\/www.eclipse.org/emf/2002/Ecore,
ecoreDomain2:http:\/\/www.eclipse.org/emf/2002/Ecore,
ecoreDomain3:http:\/\/www.eclipse.org/emf/2002/Ecore,
target rdbmsDomain:http:\/\/\/es.upv.dsic.issi/moment/rdbms
)
21
MOMENT
Hay que asegurarse de que los atributos y/o relaciones que forman
parte de la Key formarán parte del elemento creado en la regla de
transformación que se encargue de ello.
22
Notas de la versión 20070321
when{
classTointerface(c1,i1);
}
}
Ejemplo:
relation xxxx {
23
MOMENT
relation PrimitiveAttributeToColumneAttributes {
ecoreTypeName : String;
XXXX
XXXX
XXXX
when {
IsPrimitiveDatatype(ecoreTypeName);
}
} //end relation
Ejemplo 1:
relation 1 {
k1 : key;
when {
ObtainReferredPrimaryKey(t1,k1));
// Se pasa como último parámetro, la variable
// "k1" que realizará patternMatching con el
// resultado de "ObtainReferredPrimaryKey" y
24
Notas de la versión 20070321
Ejemplo 2:
relation 2 {
propVar1 : Variable;
// .........
when {
getVariablesContainer(obj1, objContSource1, propVar1);
// Se pasa como último parámetro , la
// variable "propVar1" que realizará
// patternMatching con el resultado de
// "getVariablesContainer" y que posteriormente
// utilizaremos en la llamada a la siguiente
// regla a ejecutar (bloque WHERE)
// "VariableNestedToVariableFlattened"
}
where {
VariableNestedToVariableFlattened(propVar1);
}
}
(
(obj1.propertyTemplateExpresion.objContainer.
partObjTemplateExp.valueOclProperty.
variableOCLExp ->asOrderedSet()->
intersection(
obj2.partObjTemplateExp.valueOclProperty.
variableOCLExp->asOrderedSet()
)
) -> first().name
)
25
MOMENT
relation Transformation2Transformation {
when {
TPackage2TPackage(p1,p2);
TModel2TModel(sm1,sm2);
TModel2TModel(tm1,tm2);
}
where {
TModel2TModel(sm1);
TModel2TModel(tm1);
}
}
(
((obj1.propertyTemplateExpresion.objContainer.partObjTemplateExp
.valueOclProperty.variableOCLExp) ->asSet())->intersection((
obj2.partObjTemplateExp.valueOclProperty.variableOCLExp)-
>asSet()) -> isEmpty())
26
Notas de la versión 20070321
Ejemplo:
relation ComplexMoleculeToProduct {
where {
SimpleMoleculeToEnumerated(simplemolec1, gb1, prod1);
}
}
// ...
function GetMoleculeType(molec : Molecule) : String
{
if (molec.statesOf -> isEmpty())
then
if (molec.klass -> includes('adaptor proteins'))
then 'A'
else
if (molec.klass -> includes('receptors'))
then 'R'
else 'O'
endif
endif
else
if (molec.name = 'LPS:LBP')
then 'OA'
else
if (molec.name = 'LPS:LBP:CD14')
then 'OAR'
else
if (molec.name = 'ST2:TIRAP'
or molec.name = 'ST2:MyD88')
then 'RA'
else 'Unknown' // No debería llegar aquí
endif
endif
endif
endif
}
27
MOMENT
28
Notas de la versión 20070321
relation AsignaturaSrcToAsignaturaDst {
asignaturaNombre1 : String;
29
MOMENT
where {
ExamenesSrcToExamenesDst(srcExam1, dstAsig1);
}
}
relation ExamenesSrcToExamenesDst {
idExam1 : String;
30
Notas de la versión 20070321
Autor1 Libro1
Autor2 Libro2
1. Primero se crea el primer autor, con los libros en los que participa
Autor1 Libro1
Libro2
Autor1 Libro1
Autor2 Libro2
Autor1 Libro1
Autor2 Libro2
31
Notas de la versión 20070321
33
MOMENT
34
Notas de la versión 20070321
35
MOMENT
opción «QVT → Parse QVT textual program and show AST», que
adicionalmente muestra el AST obtenido tras el paso de análisis
sintáctico). Al invocarlo, los últimos cambios realizados a la
transformación deben haber sido guardados en disco.
36
Notas de la versión 20070321
37
Notas de la versión 20070321
39
MOMENT
40
Notas de la versión 20070321
Figura 30. Vista general de un workspace con las transformaciones de ejemplo de MOMENT.
41
MOMENT
Figura 32. Fichero del modelo QVT generado para la transformación Uml2Rdbms.qvtext.
42
Notas de la versión 20070321
Figura 34. Creación de una nueva invocación a partir del operador ModelGen directamente.
43
MOMENT
44
Notas de la versión 20070321
45
MOMENT
Figura 42. Vista del operador ModelGen personalizado para una transformación.
46
Notas de la versión 20070321
47
MOMENT
48
Notas de la versión 20070321
49
MOMENT
50
Notas de la versión 20070321
51
MOMENT
52
Notas de la versión 20070321
11. Referencias.
[2] Artur Boronat, José Iborra, José A. Carsí, Isidro Ramos, Abel Gómez.
Utilización de Maude desde Eclipse Modeling Framework para la
Gestión de Modelos. Desarrollo de Software Dirigido por Modelos -
DSDM'05 (Junto a JISBD'05). September 2005. Granada, Spain.
53