ATL / Tutoriales - Crear una transformacin ATL sencilla
< ATL En este tutorial se muestra cmo crear tu primera transformacin sencilla con ATL, a travs de un ejemplo bsico conocido: Families2Persons . Nota: Este tutorial es seguido paso a paso en el cheatsheet ATL bajo Eclipse: Desarrollo ATL> Crear una transformacin ATL sencilla . Ir a la Ayuda> Cheat Sheets ... men
para encontrarlo.
Contenido
[ ocultar ] 1 Objetivos
o 1.1 Las Familias
o 1.2 Las personas
2 Requisitos 3 Cree un nuevo proyecto ATL
4 Los metamodelos
o 4.1 El metamodelo Familias o 4.2 Las personas metamodelo
5 El cdigo de transformacin ATL
6 El archivo de modelo de las familias de la muestra 7 La configuracin de lanzamiento
8 Ejecucin de la transformacin
9 Vea tambin
Objetivos
Los objetivos de este tutorial son para llevar a cabo una transformacin de una lista de las familias a una lista de personas . Por un lado (el origen), tenemos una lista de las familias . Cada familia tiene un apellido,
y contiene un padre, una madre y un nmero de hijos e hijas (0, 1 o ms), todas con un nombre de pila. Queremos transformar esta lista en una nueva lista de personas (el objetivo), esto significa que cada miembro de la familia va a ser una persona, sin diferenciar a los padres de los nios, y sin ningn vnculo entre los miembros de una misma familia (excepto un parte de su nombre). Al final, slo tenemos que tener a una persona con su nombre completo (nombre y apellido), hombre o mujer.
Las Familias
Las Personas
Con el fin de llegar a hacer esto, hay una serie de requisitos.
Requerimientos
En primer lugar, usted tendr que instalar ATL en eclipse. Si ya se ha instalado, omita esta tarea. De lo contrario, siga los dos pasos a seguir: haga clic en Ayuda> Instalar nuevo software ...
entonces usted tiene que seleccionar un sitio de actualizacin, una bsqueda
de ATL en el campo de filtro cuando una lista de software disponible una vez que haya hecho esto, usted debe ver un "SDK ATL - SDK ATLAS
Transformacin Idioma" lnea en la lista a continuacin, en el nodo de modelado
comprobarlo, haga clic en Siguiente> , y siga las instrucciones Usted puede comprobar si ATL est instalado, vaya a Ayuda> Acerca de Eclipse SDK , a continuacin, haga clic en el detalles de instalacin del botn, y bajo el Plug-ins ficha debera ver varias lneas con ATL.
Si usted tiene cualquier problema, por favor consulte la Gua del usuario para obtener ms informacin sobre la instalacin de ATL.
Crear un nuevo proyecto ATL
Despus de la teora, vamos a empezar a crear el proyecto. Para crear un nuevo proyecto ATL, tienes que ir a File> New> Other ...
y luego seleccione ATL ATL Project> ... .
A continuacin, haga clic en el Siguiente> botn. Escriba un nombre para el proyecto (diga "Families2Persons" para nuestro ejemplo).
El proyecto debera aparecer ahora en la lista de proyectos. La Gua del usuario tambin proporciona una seccin detallado para la creacin de un nuevo proyecto ATL .
Los metamodelos
Ahora que nuestro proyecto est listo para usar, podemos llenarlo. Nuestros primeros archivos son la representacin de una familia y una persona, es decir, cmo queremos simbolizar entonces (como un mapa de simbolizar el mundo real). Esto se llama un metamodelo , y corresponde a un archivo de Ecore. Para crear el archivo Ecore, vaya a File> New> Other ... y seleccione Eclipse Modeling Framework> Ecore modelo y haga clic en Siguiente> .
Seleccione su proyecto Families2Persons en la lista, escriba un nombre para el archivo (Families.ecore por ejemplo), y haga clic en Finalizar . Un archivo vaco se agrega a su
proyecto. Repita esta tarea para el metamodelo Persons.ecore.
Ahora tenemos que llenar estos archivos. (Tenga en cuenta que la Gua del usuario muestra otros ejemplos metamodelos .)
El metamodelo Familias
Como vimos en el Objetivo parte, una familia tiene un apellido, y un padre, una madre,
hijos e hijas con un nombre de pila. Eso es lo que tenemos que decirle al archivo Families.ecore. Abrir con el editor por defecto (Ecore modelo de la muestra Editor). Tambin necesitaremos las Propiedades de vista, por lo que si no est ya abierto, le podemos mostrar que se va en Window> Show View> Other ... , seleccionando General> Propiedades y haga clic en Aceptar .
El archivo de Families.ecore viene en la forma de un rbol. La raz debe ser: "La plataforma :/ resource/Families2Persons/Families.ecore". Si expande ella, hay un nodo vaco bajo l.
Haga clic en l, y en el Propiedades de vista, escriba "Families" en el valor de la
propiedad "Name". Este nodo es donde vamos a poner todo lo que hace una familia. As que primero creamos una clase "Familia", haciendo clic derecho sobre el nodo de Familias , y al hacer clic en Nuevo para nios> EClass .
Puede que el nombre de la misma manera que usted nombr las familias nodo anterior. A continuacin le damos un atributo ( Nuevo Nio> EAttribute ) y el nombre "Apellido".
Queremos tener una y slo una apellido por familia, por lo que el control de su multiplicidad: set 1 para el lmite inferior (que se debe establecer en 0 por defecto), y 1 para el lmite superior (que ya debera ser 1). Estos lmites se pueden ajustar de la misma manera que el nombre, sino en las de lmite inferior y el lmite superior de
propiedades. Podemos especificar un tipo de este atributo, y queremos que sea una cadena. As que en la propiedad EEscriba, buscar el tipo Estring.
En este momento, tenemos una familia con su apellido. Ahora necesitamos los miembros de esta familia. Por lo tanto vamos a crear otra clase (como hemos creado
la clase de la familia): "Miembro". Esta clase ser el hijo de un nodo de familias, ya que la otra clase de familia. Estos miembros tienen un nombre, por lo que aadir un atributo "nombre" del tipo Estring, y de nuevo un miembro tiene uno y slo un nombre (vase ms arriba si no te acuerdas de cmo crear un atributo, el nombre, darle un tipo y cambiar su multiplicidad). Ahora tenemos que hacer que los vnculos entre la familia y los miembros. Para ello, usted tiene que crear hijos de la familia del tipo Ereferencia . Nombra estas referencias "padre", "madre", "hijos" e "hijas". Tendrn la EEscriba miembro . Acerca de la multiplicidad, tenemos una padre y una madre para una familia (los lmites superior e inferior de manera ponen a 1), pero podemos tener tantos hijos e hijas como queramos, incluso 0 (juego por lo cota inferior a 0, y la parte superior conjunto vinculado a -1, lo que significa *). Y por fin, poner su Contencin propiedad verdadera para que puedan
contener miembros. Una vez que estos atributos se crean y configuran, hacemos lo mismo para la clase de miembros. Tambin necesita referencias hacia la clase de la familia.Slo tiene que aadir 4 EReferences a la clase de usuario: "familyFather", "familyMother", "familySon" y "familyDaughter" con EEscriba familia . Esta vez, cada referencia debe haber su
multiplicidad se define como 0 .. 1 (que es por defecto), debido a que un miembro es o un padre o una madre o un hijo o una hija, por lo que la referencia que se define para un miembro muestra su papel en la familia. Luego, con el fin de saber cul de ellos hace referencia a que un familiar, puesto su campo EOpposite a su referencia en la clase de la familia (por ejemplo, familyFather refiere al padre de referencia de la clase de la
Familia).
Y aqu estamos con el metamodelo para nuestras familias!
El metamodelo Personas
El principio es el mismo para el metamodelo de destino, en menos complicada. Abra el archivo Persons.ecore, y el nombre del nodo raz nio a "Personas". A continuacin, agregue una "Persona" de clase, con un atributo: "Nombre completo" de EEscriba Estring y multiplicidad 1 .. 1. A continuacin, establezca el resumen de atributo de la clase a "true"
Persona. Tenemos que hacer esto porque no vamos a poner en prctica esta clase directamente, pero otras dos subclases: "masculinos" y "femeninos", segn a quin era la persona en la familia, un hombre o una mujer. Crear estas dos clases en el mismo nivel de Persona. Los hacemos subclases de persona configurando sus Tipos ESuper propiedad a persona.
Y nuestro segundo metamodelo est listo!
El cdigo de transformacin ATL
Ahora que hemos representado a lo que tenemos (Familias, la fuente ) y lo que se quiere obtener (personas, el objetivo ), podemos concentrarnos en el ncleo de la transformacin: el cdigo de ATL. Este cdigo se va a coincidir con una parte de la fuente con una parte de la diana. Lo que queremos en nuestro ejemplo, es tomar cada miembro de cada familia , y transformarlo en una persona . Eso implica la fusin de su nombre y apellido a tener un nombre y apellido, que define si se trata de un hombre o una mujer, y copiar estas piezas de informacin en una persona objeto.
Primero necesitamos un archivo de poner este cdigo en. Por lo tanto crear un nuevo archivo de ATL, por ir a File> New> Other ... , y luego ATL> ATL archivo .
El nombre de "Families2Persons.atl", por ejemplo, no se olvide de seleccionar el proyecto y, a continuacin, haga clic en Finalizar .
Si se le pide que abra la perspectiva de ATL, haga clic en S .
Al abrir el archivo, el error se marca (ya veremos cmo solucionarlo ms adelante), y contiene una sola lnea:
Families2Persons mdulo;
En primer lugar se aaden dos lneas en la parte superior del archivo , una para cada
metamodelo, para que el editor puede utilizar la auto-realizacin y documentacin cuando escribimos en algn cdigo en relacin con los dos metamodelos:
- @ Familias path = / Families2Persons/Families.ecore
- @ Trayectoria Personas = / Families2Persons/Persons.ecore
Entonces le decimos a ATL que tenemos familias y queremos que las personas fuera (esto debera solucionar el error):
crear OUT: las personas contra las IN: Familias;
Ahora debemos definir algunos ayudantes:
auxiliares Familias contexto miembro def: isFemale (): Boolean =
Si no self.familyMother.oclIsUndefined () entonces
verdadero
ms
Si no self.familyDaughter.oclIsUndefined ()
entonces
verdadero
ms
falso
endif
endif;
auxiliares Familias contexto miembro def: familyName: String =
Si no self.familyFather.oclIsUndefined () entonces
self.familyFather.lastName
ms
Si no self.familyMother.oclIsUndefined () entonces
self.familyMother.lastName
ms
Si no self.familySon.oclIsUndefined ()
entonces
self.familySon.lastName
ms
self.familyDaughter.lastName
endif
endif
endif;
Estos ayudantes sern utilizados en las reglas que vamos a ver a continuacin. El primero se llama a un miembro de una familia ( ! familias contexto miembro ), nos
da un booleano ( Boolean ), y nos dice si el miembro es una mujer o no, verificando si se define la familyDaughter o familyMother referencia o no.
El segundo, tambin se llama a un miembro de una familia, esta vez nos da una cadena ( String ) y devuelve el apellido del miembro. Debe buscarlo en todas las
referencias a la familia, para ver cul se define ( familyFather , familyMother , familySon o familyDaughter )
Y, por ltimo, aadimos dos reglas que crean personas de sexo masculino y femenino de los miembros de las familias:
descartar Member2Male {
desde
s: Familias miembros (no s.isFemale ())
a
t: Personas Male (
fullName
mejor que lo que se puede ver arriba. Adems, usted puede encontrar ayuda en lo que vimos anteriormente en la Gua del usuario, aqu y aqu .
El archivo del modelo de las familias de la muestra
La transformacin est listo para ser utilizado, slo necesitamos un modelo de ejemplo de ejecutarlo en. Primero cree un archivo en el proyecto en el que pondremos el cdigo del modelo. Ir a Archivo> Nuevo> Archivo
el nombre de "sample-Families.xmi", por ejemplo
y bralo con un editor de texto. He aqu algunos ejemplos de cdigo:
La configuracin de lanzamiento
Tenemos todo lo que necesitamos para hacer la transformacin, pero no es un paso ms antes de lanzarlo, al menos la primera vez: tenemos que configurar el lanzamiento. Cuando usted est en el archivo de ATL (Families2Persons.atl), haga clic en Ejecutar> Ejecutar (o Ctrl + F11)
Se abrir un cuadro de dilogo. Varias piezas de informacin ya contienen: el mdulo ATL (nuestro archivo de transformacin, Families2Persons.atl ), los metamodelos ( Families.ecore y Persons.ecore ), pero tenemos que completar la pgina.
Los Modelos de origen (en:, se ajusta a las Familias) parte es el modelo que queremos transformar, es decir, nuestra muestra-Families.xmi ; navegar por el espacio
de trabajo para aadirlo.
Los modelos objetivo (Out:, se ajusta a las Personas) parte es el modelo que se
generen; navegar por el espacio de trabajo para encontrar su proyecto y escriba un nombre para el archivo (decir "sample-Persons.xmi").
Una opcin til se puede encontrar en la ficha Comn de la pgina: podemos guardar nuestra configuracin para que ATL puede encontrarlo la prxima vez nos gustara que para ejecutarlo o si el proyecto se exporta. Si marca archivo compartido y navegar
dentro de su proyecto, puede guardar esta configuracin en un archivo ("Families2Persons.launch", por ejemplo).
Usted puede encontrar ayuda sobre cmo compilar un archivo ATL en la Gua del usuario, aqu .
Ejecucin de la transformacin
Por fin podemos ejecutar la transformacin, haga clic en Ejecutar en la pgina de configuracin. Entonces se genera un archivo, el nombre de la muestra-Persons.xmi ,
y que contiene la lista de los miembros de su familia se transforma en personas. Esto es lo que debe conseguir si se abre con un editor de texto:
Ejecucin de una configuracin de lanzamiento ATL se explica en la Gua del usuario, aqu Este es el final de este ejemplo bsico. Ms documentacin, ejemplos y ayuda se puede encontrar en el sitio web ATL: http://www.eclipse.org/atl/ .
Top Related