Hi Matthias, 
in fact I was thinking of lesser coupling between AndroMDA and the
model transformation frameworks by using an XML-based pipes and
filters architecture:

Use the cartridge descriptor (or maven goals) to declare a chain of
transformations (model-to-model and/or model-to-code).  AndroMDA must
make sure that it provides an XML element to execute a model
transformation by calling one Java method with some extents (or
xmi-file locations) as arguments.  The model transformation does
"something" to "some extents" and returns.  AndroMDA looks for the
next element in the transformation chain declaration.  It can be
another model transformation or a reference to a code template.

> <transformation engine="ATL" input="UML2Spring.asm"
>  ... more attributes here ...
I would do this as follows:
 <transformation classpath="lib/motmot.jar">
    <rule>be.antwerp.MyTransformation.foo2bar("Conceptual", "Spring",
... other params ...)</rule>
 </transformation>
 <transformation classpath="lib/atl.jar">
    <rule>fr.nantes.MyTransformation.foo2bar("Spring", "3GL", ...
other params ...)</rule>
 </transformation>
 <transformation>
    <template>
       ... similar to AndroMDA 3 ...
 </transformation>

The only requirement for a model transformation framework is that it
exposes its model transformations as Java methods.  I can imagine that
for some frameworks one has to write a small wrapper that delegates
the call from AndroMDA to a series of calls to the model
transformation engine but for such frameworks, you'd have the same
amount of work for the interface-approach.

What do you think of this?

Best regards,
-- Pieter.

On 8/24/05, Matthias Bohlen <[EMAIL PROTECTED]> wrote:
> PVG> Using the cartridge descriptor makes sense as well, but please
> PVG> make sure not to make it dependent on *.asm files. It would also
> PVG> be nice if any transformation language with a Java API could be
> PVG> used out of the box, even when we go for the cartridge descriptor
> PVG> approach.
> yes, we could do it as we always do:
> 
> * define an abstraction in the form of an interface,
>   e.g. "IModelTransformer"
> * create an implementation of that interface, e.g. "ATLTransformer"
> * call only the interface instead of the implementation
> 
> So, the cartridge descriptor should also state the transformation
> engine to use, but only as a shorthand notation, e.g.
> 
> <transformation engine="ATL" input="UML2Spring.asm"
>  ... more attributes here ...
> />
> 
> D'accord?
> Matthias
> 
> ---
> 
> Matthias Bohlen
> 
> Internet:
>    http://www.mbohlen.de/
>    [EMAIL PROTECTED]
> 
> 
> 
>


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

Reply via email to