ATL Simple

24
ATL / Tutoriales - Crear una transformación ATL sencilla < ATL En este tutorial se muestra cómo crear tu primera transformación sencilla con ATL, a través de un ejemplo básico conocido: Families2Persons . Nota: Este tutorial es seguido paso a paso en el cheatsheet ATL bajo Eclipse: Desarrollo ATL> Crear una transformación 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 código de transformación ATL 6 El archivo de modelo de las familias de la muestra 7 La configuración de lanzamiento 8 Ejecución de la transformación 9 Vea también Objetivos Los objetivos de este tutorial son para llevar a cabo una transformación 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 número de hijos e hijas (0, 1 o más), 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 niños, y sin ningún vínculo entre los miembros de una misma familia (excepto un parte de su nombre). Al final, sólo tenemos que tener a una persona con su nombre completo (nombre y apellido), hombre o mujer. Las Familias Las Personas

description

ATL

Transcript of ATL Simple

  • 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/ .