Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "AMW FAQ"

Line 25: Line 25:
 
This error happens because the ATL engine cannot find antlr.jar.
 
This error happens because the ATL engine cannot find antlr.jar.
 
This file must be copied in "lib" folder of "org.atl.eclipse.engine" plugin.
 
This file must be copied in "lib" folder of "org.atl.eclipse.engine" plugin.
 +
 +
==How to develop higher-order transformations to transform a weaving model into a transformation model?==
 +
This answer uses the [http://www.eclipse.org/gmt/amw/examples/#AMWKey2NestedAMW2ATL ForeignKey2Nested] example as illustration.
 +
 +
The main requirement is to know well the input metamodel (the weaving metamodel) and the output metamodel (the  [http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.gmt/ATL/org.atl.eclipse.engine/src/org/atl/eclipse/engine/resources/ ATL metamodel]).
 +
The weaving metamodel varies according to the application scenario. The ATL metamodel is fixed.
 +
 +
In the example, the weaving metamodel is created based by the right metamodel, i.e., with nested structure. The weaving model has "Nested" subjects (which is under a link between "BookRcd" and "Book"). Then, we have the input values as equality of "FK"s.
 +
 +
So, usually there are extensions of "WLink"s and "WLinkEnd"s in the weaving metamodel, and rules, input and output patterns in the ATL metamodel.
 +
 +
Consider this simple example:
 +
 +
module A2B;
 +
create OUT : B from IN : A;
 +
 +
an ATL has a "Module" as root element. A module has a "name".
 +
Than it has the input and output models and metamodels (In, A, OUT, B).
 +
 +
After that, a module contains a set of rules:
 +
 +
rule A2B { <- this corresponds to a "rule" in the ATL metamodel
 +
 +
from
 +
  in : A!Class  <- this is the "input pattern"
 +
to
 +
  out : B!Table ( <- this is the "output pattern"
 +
      name <- in.name,    <- these are the "bindings"
 +
      value <- in.value    <- bindings
 +
  )
 +
}
 +
 +
The initial part (module and input models), is usually fixed, so they can be created using a single rule.
 +
 +
- The rules will be based in the weaving model, so WLinks and its extensions in rules. In the keys to nested example, this corresponds to the "ElementLink" element.
 +
- The input pattern is a "left" WLinkEnd.
 +
- The output pattern is a "right" WLinkEnd.
 +
 +
The bindings are child links ("Equals" are bindings).
 +
 +
Finally, one hint to better understand the ATL metamodel (that is a key point) is to write a simple transformation by hand and to click over some element in the debug mode. The outline in the right shows the corresponding model elements.

Revision as of 05:18, 14 November 2006

< To: AMW

This is the AMW wiki FAQ.

What are the dependencies of AMW? Which are the other plugins that should be installed?

AMW depends on two plugins from ATL and AM3 plugins:

  • org.atl.eclipse.engine
  • org.atl.eclipse.km3

However, it is advisable to install all ATL and KM3 plugins, because AMW contains complex scenarios that use all the components of the AMMA platform, such as ATL transformations, or AM3 Ant Tasks.

Where can I find more information about the model management tasks used in AMW examples?

More information can be found in the AM3 Ant Tasks page.

Which version of AMW, AM3 and ATL should be installed to avoid version problems?

The required versions of the three plugins are mentioned in the corresponding download pages: AMW, AM3, ATL. <p/>

Why the menu "Extract ATL-0.2 model into ATL-0.2 file" does not appear when I try to extract an ATL model that was created from a weaving model?

Specific extraction and injection menus are available only in the "AM3 Resource Navigator", not in the "Package Explorer" view.

Why I have an "antlr/tokenstream" error?

AMW depends on the ATL plugins. So the ATL engine must be installed follwing the ATL installation guide. This error happens because the ATL engine cannot find antlr.jar. This file must be copied in "lib" folder of "org.atl.eclipse.engine" plugin.

How to develop higher-order transformations to transform a weaving model into a transformation model?

This answer uses the ForeignKey2Nested example as illustration.

The main requirement is to know well the input metamodel (the weaving metamodel) and the output metamodel (the ATL metamodel). The weaving metamodel varies according to the application scenario. The ATL metamodel is fixed.

In the example, the weaving metamodel is created based by the right metamodel, i.e., with nested structure. The weaving model has "Nested" subjects (which is under a link between "BookRcd" and "Book"). Then, we have the input values as equality of "FK"s.

So, usually there are extensions of "WLink"s and "WLinkEnd"s in the weaving metamodel, and rules, input and output patterns in the ATL metamodel.

Consider this simple example:

module A2B; create OUT : B from IN : A;

an ATL has a "Module" as root element. A module has a "name". Than it has the input and output models and metamodels (In, A, OUT, B).

After that, a module contains a set of rules:

rule A2B { <- this corresponds to a "rule" in the ATL metamodel

from

  in : A!Class  <- this is the "input pattern"

to

  out : B!Table ( <- this is the "output pattern"
     name <- in.name,     <- these are the "bindings"
     value <- in.value    <- bindings
  )

}

The initial part (module and input models), is usually fixed, so they can be created using a single rule.

- The rules will be based in the weaving model, so WLinks and its extensions in rules. In the keys to nested example, this corresponds to the "ElementLink" element. - The input pattern is a "left" WLinkEnd. - The output pattern is a "right" WLinkEnd.

The bindings are child links ("Equals" are bindings).

Finally, one hint to better understand the ATL metamodel (that is a key point) is to write a simple transformation by hand and to click over some element in the debug mode. The outline in the right shows the corresponding model elements.

Back to the top