blob: 94e8abdc0b88720aeceb947fa4795b4d3a909454 [file] [log] [blame]
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop'
#*****************************************************************************
#
# AMW_Match_SF_doc.php
#
# Author: Marcos Didonet Del Fabro
# Date: 2005-07-24
#
# Description: Type your page comments here - these are not sent to the browser
#
#
#****************************************************************************
#
# Begin: page-specific settings. Change these.
$pageTitle = "Developing matching heuristics and integrating with AMW";
$pageKeywords = "";
$pageAuthor = "Marcos Didonet Del Fabro";
# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<!-- Main part -->
<div id="midcolumn">
<table width="100%">
<tr>
<td width="50%">
<h1>$pageTitle</h1>
</td>
</tr>
</table>
<p>
The AMW plug-in provides a set of matching transformations that automatically create weaving models.
However, it may be necessary to
develop new transformations, due to several reasons: to develop new heuristic methods; to better tune the existing
heuristics; or to execute several transformations at the same time and with different weights. <p/>
The AMW plug-in provides an extension point that enables to easily plug new matching transformations. This
page explains how to contribute to this extension point.
This is a technical document that requires previous knowledge about development of Eclipse plug-ins.
<p/>
<H3>Extension point to plug transformations</H3>
<p></p>
<h4>Identifier: </h4>org.eclipse.weaver.transformationID<p></p>
<h4>Since: </h4>AMW 2006
<p></p>
<p>
<h4>Description: </h4>
This extension point enables defining matching transformations and higher order transformations that are executed
using the context menus of the weaving panel.
The transformations must follow a specific signature.
<p/>
There is two types of transformations that can be executed:
<p/>
- <b>matching</b>: the matching transformations are added in the menu "Match". The matching transformations produce a new weaving model
with a suffix added to the file name.
<pre>
create OUT : AMW from IN : AMW, left : MOF, right : MOF;
</pre><p/>
- <b>HOT</b>; the higher-order transformations are added in the menu "Transform".
The higher-order transformations produce an ATL transformation model. This model is used to transform
the models conforming to the left metamodel into models conforming to the right metamodel.
<p/>
<pre>
create OUT : ATL from IN : AMW, left: MOF, right: MOF;
</pre>
<p/>
The developer must indicate the transformation file ('.asm').
The weaving model opened in the weaving panel is the input weaving model. <br/>
<p/>
The developer must also indicate which references from the weaving model are equivalent to the left and right input models (from
the transformation signature). This allows using different metamodel extensions tp define the left and right models.</p>
<p><h4>Configuration Markup:</h4></p>
<pre>
&lt;!ELEMENT extension (matching* , hot*)>
&lt;!ATTLIST extension
point CDATA #REQUIRED
id CDATA #REQUIRED>
</pre>
<ul class="midlist" >
<li><b>point</b> - the extension point ID</li>
<li><b>id</b> - the ID of this plug-in (used for identification)</li>
</ul>
<pre>
&lt;!ELEMENT matching (binding+)>
&lt;!ATTLIST matching
transformation CDATA #REQUIRED
description CDATA #REQUIRED
file_suffix CDATA #REQUIRED>
</pre>
<ul class="midlist" >
<li><b>transformation</b> - the name of the transformation (must be the .asm)</li>
<li><b>description</b> - a description that appears on the menu</li>
<li><b>file_suffix</b> - the new weaving model is created with this suffix added to the file name</li>
</ul>
<pre>
&lt;!ELEMENT binding EMPTY>
&lt;!ATTLIST binding
reference CDATA #REQUIRED
header CDATA #REQUIRED>
</pre>
<ul class="midlist" >
<li><b>reference</b> - the name of the reference to WModelRef defined in the weaving metamodel extension</li>
<li><b>header</b> - the header of the transformation (must be left or right)</li>
</ul>
<h4>Examples: </h4>
This example defines one matching and one higher order transformation.
The "leftM" reference of the weaving model is assigned to the "left" model of the transformation.
The "rightM" reference of the weaving model is assigned to the "right" model of the transformation.
The other models are assigned automatically.
<pre>
&lt;plugin>
&lt;extension id="TransformationExtension" point="org.eclipse.weaver.transformationID">
&lt;matching transformation="transformations/Assign_NameSimbyType.asm" description="Name equality" file_suffix="eq">
&lt;binding reference="leftM" header="left"/>
&lt;binding reference="rightM" header="right"/>
&lt;/matching>
&lt;hot transformation="transformations/AMWtoATL_Match.asm" description="Generate transformation" file_suffix="hot">
&lt;binding reference="leftM" header="left"/>
&lt;binding reference="rightM" header="right"/>
&lt;/hot>
&lt;/extension>
&lt;/plugin>
</pre>
<p/>
<h4>Supplied Implementation: </h4>
There is a default implementation of this extension point in the Transformation Extension
plugin: "org.eclipse.weaver.transformation".
<p></p>
</div>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>