| <?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' |
| |
| #***************************************************************************** |
| # |
| # template.php |
| # |
| # Author: Freddy Allilaire |
| # Date: 2005-12-07 |
| # |
| # Description: Type your page comments here - these are not sent to the browser |
| # |
| # |
| #**************************************************************************** |
| |
| # |
| # Begin: page-specific settings. Change these. |
| $pageTitle = "AMW Use Case - Inverting mappings"; |
| $pageKeywords = "model weaving, transformations, invert schema operator, model |
| management"; |
| $pageAuthor = "Hanna Kozankiewicz"; |
| |
| # End: page-specific settings |
| # |
| |
| # Paste your HTML content between the EOHTML markers! |
| $html = <<<EOHTML |
| |
| <!-- Main part --> |
| <div id="midcolumn"> |
| <h1><font color='#280882'>AMW</font> Use Case - Inverting metamodel mappings</h1> |
| |
| <a name="goals"></a> |
| <img align="right" src="../../resources/amwLogoSmall.png" valign="top" style="padding-left: 10px;" alt="AMW Logo" /> |
| <blockquote> |
| <ul> |
| <li><a href="#overview"><b>Overview</b></a></li> |
| <li><a href="#download"><b>Download and examples</b></a></li> |
| <li><a href="#related"><b>Related use cases</b></a></li> |
| <li><a href="#acknowledgement"><b>Acknowledgement</b></a></li> |
| <li><a href="#reference"><b>Reference</b></a></li> |
| |
| </ul> |
| </blockquote> |
| |
| <hr class="clearer" /> |
| |
| <table> |
| <COLGROUP> |
| <COL width="2%"> |
| <COL width="98%"> |
| <tr> |
| <td> |
| </td> |
| <p align="justify"> |
| Inversing of mappings is one of the most important model management operators. Informally speaking, the operator puts back a given mapping of metamodels. The operator has multiple practical applications - it is essential in various model management applications like schema evolution [Mel04], it can also simply serve a role of an 'undo' facility, etc. In this use case, we introduce an application of inverses in system supporting work of salesmen, where there is a need to synchronize data between global database and some local databases stored on PDAs. |
| </p> |
| <p align="justify"> |
| The objective of this use case is to show that AMW can easily support the process of inverse mapping generation. |
| |
| <p/> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| |
| <a name="overview">Overview</a></h4> |
| |
| <p align="justify"> |
| In this use case we generate an inverse weaving model from the weaving model. The figure below presents consecutive steps of mapping inverting. In the first step we find correspondences between two input metamodels (it has a form of a weaving model). Although, core original AMW weaving metamodel is not directed (there is no distinction between source and target), in case of inverting metamodel mapping, such a distinction is necessary. (Therefore, we will use the terms weaving model and inverse weaving model.) In the following step, we generate an inverse weaving model on the basis of a weaving model. Further, we translate this weaving model into an executable ATL transformation, so we are able to transform data from one model to another. |
| |
| <p/> |
| <p align="justify"> |
| |
| |
| <p/> |
| <p align="justify"> |
| |
| |
| <p/> |
| |
| <p align="center"> |
| <img src="../resources/genArch.png"/> |
| <br /><br /> |
| <b>"Inverse mapping" Use Case's Overview</b> |
| </p> |
| |
| <p align="justify"> |
| |
| |
| </p> |
| |
| <p align="justify"> |
| |
| |
| In order to support inverse metamodel mappings we introduced an extension to the <a href="http://wiki.eclipse.org/index.php/AMW#Core_weaving_metamodel">core weaving metamodel</a>. Among others, in this metamodel we associated with each supported type of a link/operation the type of a link/operation being its inverse (we store this information as annotations). |
| |
| </p> |
| |
| <p align="justify"> |
| In the use case we introduce an ATL transformation which generates the inverse mappings. The transformation takes as an input an original weaving model and its weaving metamodel. We assume that the resulting inverse mapping can then be manually corrected if the result is not satisfactory for the user. Next, the resulting weaving model can be used as input of higher-order transformations to generate executable transformation of models (using this transformation, we are able to translate data from one format to another). |
| </p> |
| |
| |
| |
| <p align="justify"> |
| We illustrate our approach to inversing metamodel mapping using an example with two metamodels that describe sale data (metamodels of databases are shown below). One of the metamodels is relational (it contains only flat tables), while the other is XML (nested). This are metamodels used by a Sales Force Automation (SFA) i.e., a system aimed at automating business tasks of sales teams working out of their offices; such tasks include order processing, contact management, information sharing, customer management, etc. We have a global relational database kept in the headquates of a company (its fragment is presented in the figure below), and small salesmen applications designed for PDAs that uses only fragment of this database using XML format. In the periodical process of synchronisation of these databases inverse mappings are crucial. |
| |
| </p> |
| |
| |
| <p align="center"> |
| <img src="../resources/mapping.png"/> |
| <br /><br /> |
| <b>RDBMS and XML metamodels</b> |
| </p> |
| |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| <a name="download">Download and examples</a></h4> |
| |
| <table> |
| <COLGROUP> |
| <COL width="25%"> |
| <COL width="75%"> |
| <tr> |
| |
| <td align="center"> |
| <a href="../../examples/SFA/SFA.zip"><h3>Example</h3></a> |
| </td> |
| <td> |
| This example implements inversing metamodel mappings. It is based on the example described above in the paper. |
| <p/> |
| </td> |
| </tr> |
| </table> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| |
| <a name="related">Related use cases</a></h4> |
| |
| <table> |
| <COLGROUP> |
| <COL width="25%"> |
| <COL width="68%"> |
| <tr> |
| |
| <td align="center"> |
| <a href="../RDBMSXML/"><h3>Relational DB to XML</h3></a> |
| </td> |
| <td> |
| This use case shows how weaving models can be used to perform the data mapping between relational DBs and XML. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../traceability/"><h3>Traceability of model transformations</h3></a> |
| </td> |
| <td> |
| This use case shows how to keep track of the elements of the source model that were used to produce one target model element. |
| </td> |
| </tr> |
| |
| </table> |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| <a name="acknowledgement"></a>Acknowledgment |
| </h4> |
| |
| This work was carried out during the tenure of an ERCIM "Alain Bensoussan" Fellowship Programme. |
| <p/> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| <a name="reference"></a>Reference |
| </h4> |
| |
| [Mel04] Sergey Melnik: Generic Model Management: Concepts and Algorithms Springer 2004 |
| <p/> |
| </div><p/> |
| |
| <div id="rightcolumn"> |
| <div class="sideitem"> |
| <h6>General Information</h6> |
| <ul> |
| <li style="list-style:none">June 2007</li> |
| <li style="list-style:none">By <a href="http://www.sciences.univ-nantes.fr/lina/atl/contrib/kozankiewicz">Hanna Kozankiewicz</a> (INRIA)</li> |
| </ul> |
| </div> |
| </div> |
| |
| |
| |
| EOHTML; |
| |
| |
| # Generate the web page |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| ?> |