<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Message</TITLE>
<META content="MSHTML 6.00.2900.2963" name=GENERATOR></HEAD>
<BODY>
<DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN
style="FONT-SIZE: 14pt"><SPAN class=075340213-29092006><FONT size=2>Document
attached about the ModelMigration.exe tool.</FONT></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN
style="FONT-SIZE: 14pt"><SPAN class=075340213-29092006><FONT
size=2>Zoli</FONT></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN
style="FONT-SIZE: 14pt"></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN
style="FONT-SIZE: 14pt">Model Migration tool<?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The need for model migration
aiding tools rises from the fact that metamodels change from time to time, as
the metamodeler’s thinking evolves about the specific domain. This implies that
models must be valid according to the new version of the metamodel.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Simple cases are handled by the
Resolver component of GME, during XME file import (like role name selection).
Real complex model migrations (transformations) are aided by the GreAT toolset.
The ModelMigrate tool is intended to fill the gap between the two, the migration
process consisting of applying the user defined rules as XSL transformations
onto the model files (XME file).</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The tool is composed of main
parts: Rule Editor and Processor. The Rule Editor window enables the user to
define the metamodel changes as distinct transformation rules i.e.: kind name
‘InputSignals’ should be renamed to ‘InpSig’. The user can export a carefully
selected set of rules into an XSLT file. It is advised to export some rules only
on their own into a separate XSLT file for cases mentioned later, because the
XSLT logic the rules transform to may not be so smart sometime to allow
grouping. This rule definition is a GUI based activity, and although XSLT file
editing not being required by the user, it is still a manual process, which does
not benefit from the information found in the old and new versions of the
metamodel.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The second part of the tool (the
main window) is like a batch converter, allowing the user to specify multiple
XSLT scripts to apply, to load the XME files to be transformed, and doing the
required transformation in as many steps as many XSLT scripts are specified.
After each step an output file is produced, which is then used as the input of
the next step. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">For example: if the user
specifies a three step migration (3 XSLT files) and it executes this
transformation of a file called SFDemo.xme, then the first step produces a file
called SFDemo_out01.xme, the second SFDemo_out02.xme, and the final step
produces SFDemo_out.xme. This transformation process is supported by the
Mga.MgaXslt COM object, through its IMgaXslt interface’s ApplyXslt method. The
underlying XSLT processor is Xalan.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The main window shows two lists.
The user must specify the XSLT scripts in the first , the XME files to transform
in the second (file drag and drop enabled for both). Beside the menu commands,
the user can right click for additional commands.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Automatic validator script
generation</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This feature parses a paradigm
file (with .xmp extension) extracts the valid kinds (of fcos, folders and
attributes) and generates a validator XSLT script which when applied will ignore
any other element kind (folder, fco or attribute) not appearing on its roster.
This feature is accessible from the Rules menu of the main window.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><B
style="mso-bidi-font-weight: normal">Description of the Rules
Supported<o:p></o:p></B></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><B
style="mso-bidi-font-weight: normal"><o:p> </o:p></B></P>
<P class=MsoNormal
style="MARGIN: 0in 0in 0pt"><U>KindNameChange<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This simple modification is a
Search&Replace function, operating on the kind attribute (in XML sense of
the word) of each fco or folder element.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal
style="MARGIN: 0in 0in 0pt"><U>AttrNameChange<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Similar to KindNameChange, except
it renames attributes, operating on kind attributes of attribute elements (in
XML sense). Since attributes in GME can be either global/local this can be
specified in the dialog. In case of local attributes the Search&Replace
operation is performed for the owner kind elements only. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal
style="MARGIN: 0in 0in 0pt"><U>AttrTypeChange<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Since GME stores the attribute
values in the XML file as strings, type conversion occurs at import
automatically, the only case requiring special care is when an non-number
attribute kind (in the metamodel) is changed to FieldAttribute of type Integer
or Double. In this case the import process will fail if the value found can not
be converted to a number. That is why the AttrTypeChange rule is actually a
checker, providing as result a list of elements whose attribute values need to
be edited manually by the user, because are not numbers. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal
style="MARGIN: 0in 0in 0pt"><U>EnumAttrValueChange<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This Search&Replace operation
changes enumeration items of EnumAttributes used in the metamodel. This rule
should not be exported together with an AttrNameChange rule, which would rename
the attribute itself. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal
style="MARGIN: 0in 0in 0pt"><U>MoveDownElem<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This rule enables the user to
move a kind down the containment hierarchy. Folders or Models can be specified
as the wrappers, the objects are packaged into.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The GUI requires the user to
define the kind of object to be moved down, and its parent’s kind in the old
model (Search part). If the element to be moved down was a root object, then for
its parent the user must specify the RootFolder string.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The hierarchy (wrappers) need to
be specified, which will enclose the object in the new paradigm (Replace part).
This tree structure can be built by the “Insert Child” button. The wrappers can
be folders and models, in the latter case the user must specify a “:M” string as
a suffix after the model wrapper kind, otherwise the string is considered a
folder kind.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This operation collects all
objects found in the parent kind specified, wraps them into one wrapper. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">After this step is done no other
operation is performed inside the wrapped kind (because of the way the XSLT
script is implemented) so this rule should be used always alone.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><U>MoveUpElem<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Moving up an element is a little
easier to specify. The user needs to define a hierarchy of element kinds to be
matched. Whenever the tree construct specified is matched the leaf node will be
moved up, (or unwrapped from the enclosing kinds), to become a sybling of the
topmost element specified. No “:M” suffixes need to be used here, because the
kind names are unique in the paradigm, thus a kind name uniquely identifies the
type of element.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><U>RemoveKind<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This rule simply deletes any
occurrence of the specified kind from the project file.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><U>RemoveGlobalAttr,
RemoveLocalAttr<o:p></o:p></U></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">For removal separate rules have
been introduced for attributes. Removes any occurrence of the attribute kinds
specified, in case of local attributes only from the enclosing kind
specified.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p> </o:p></P></DIV>
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV></DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT
face=Tahoma size=2>-----Original Message-----<BR><B>From:</B>
gme-users-bounces@list.isis.vanderbilt.edu
[mailto:gme-users-bounces@list.isis.vanderbilt.edu] <B>On Behalf Of
</B>seyamak karimi<BR><B>Sent:</B> Friday, September 29, 2006 3:18
AM<BR><B>To:</B> gme-users<BR><B>Subject:</B> [gme-users]
ModelMigrate<BR><BR></FONT></DIV>
<DIV>Hi</DIV>
<DIV>please help me about ModelMigrate in GME6.</DIV>
<DIV>I can't find tutorial for this subject.</DIV>
<DIV>best regard </DIV>
<DIV>s.karimi</DIV>
<P>
<HR SIZE=1>
Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls. <A
href="http://us.rd.yahoo.com/mail_us/taglines/postman7/*http://us.rd.yahoo.com/evt=39666/*http://messenger.yahoo.com">Great
rates starting at 1¢/min.</A></BLOCKQUOTE></BODY></HTML>