<!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>&nbsp;</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>&nbsp;</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&#8217;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>&nbsp;</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 
&#8216;InputSignals&#8217; should be renamed to &#8216;InpSig&#8217;. 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>&nbsp;</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&#8217;s ApplyXslt method. The 
underlying XSLT processor is Xalan.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</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>&nbsp;</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>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</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>&nbsp;</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&amp;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>&nbsp;</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&amp;Replace 
operation is performed for the owner kind elements only. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</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>&nbsp;</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&amp;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>&nbsp;</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&#8217;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 &#8220;Insert Child&#8221; button. The wrappers can 
be folders and models, in the latter case the user must specify a &#8220;:M&#8221; 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>&nbsp;</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 &#8220;:M&#8221; 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>&nbsp;</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>&nbsp;</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>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</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>