<p class="MsoNormal">Hi Joe!<br>
I have no doubt that a single model component (thus, single type)
transformation can work but my input model (see a simplified view in
attachment) contains components from both types. As you can see it has 2
MobBlock, 4 ModParts and one equation (ModelEquation). Each block and part has
its own equation (not seen) and various numbers interconnected ports from
different types. It&#39;s consistent with the Metamodel and it&#39;s what I have to
transform now. I want to build a transformation that can handle this level of complexity
and higher from the input model and, of course, a lower level of complexity as
the one you mentioned. The issue of unique identification of of metamodel
elements (see my email below and the screen capture attached) is capital when
having multiple type of components. I really need to know if GREAT can handle
this and how. I’ll also welcome any workaround strategy. </p>

<p class="MsoNormal">Thanks,</p>

<p class="MsoNormal">Leonard</p>

<br><br><div class="gmail_quote">2012/3/8 Joe Porter <span dir="ltr">&lt;<a href="mailto:joe.porter@gmail.com" target="_blank">joe.porter@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Leonard,<br>
<br>
That transformation is way too complex.<br>
If I understand you correctly, then you need to do something like this:<br>
<br>
If Model contains a single ModComponent that is of type ModPart, then<br>
get the Equation objects for ModPart and its associated Block, and<br>
create ports based on attributes in the ModEquation and the knowledge<br>
that it belongs to a ModPart object.<br>
<br>
If Model contains a single ModComponent that is of type ModBlock, then<br>
get the Equation objects for ModBlock and its associated Block, and<br>
create ports based on attributes in the ModEquation and the knowledge<br>
that it belongs to a ModBlock object.<br>
<br>
&lt;this one is still unclear, so tell me if I&#39;m on the right track&gt;<br>
If Model contains exactly two ModComponents, one of type ModPart and<br>
one of type ModBlock, then get the Equation objects for both objects<br>
and their associated Blocks, and create ports in each associated<br>
ModEquation based on attributes in the ModPart and ModBlock, and the<br>
knowledge that Model contains both objects.<br>
<br>
Does that sound right? If not, please correct it.  What if Model<br>
contains three or more ModComponents?  What do you expect to happen,<br>
or is it disallowed somehow?  What if there are two ModParts and one<br>
ModBlock, or vice-versa?<br>
<br>
Sorry for the spotty responses - I&#39;m sitting in a sponsor review<br>
meeting today and tomorrow.<br>
<div><div><br>
-Joe<br>
<br>
2012/3/8 Léonard PETNGA &lt;<a href="mailto:lpetnga@gmail.com" target="_blank">lpetnga@gmail.com</a>&gt;:<br>
&gt; Sorry,<br>
&gt; Please find it in attachment...<br>
&gt; Leonard<br>
&gt;<br>
&gt;<br>
&gt; 2012/3/8 Joe Porter &lt;<a href="mailto:joe.porter@gmail.com" target="_blank">joe.porter@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Leonard,<br>
&gt;&gt;<br>
&gt;&gt; Can you please find a different way to attach your image?  It showed<br>
&gt;&gt; up as a giant text string full of binary data on my Gmail.<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; -Joe<br>
&gt;&gt;<br>
&gt;&gt; 2012/3/8 Léonard PETNGA &lt;<a href="mailto:lpetnga@gmail.com" target="_blank">lpetnga@gmail.com</a>&gt;:<br>
&gt;&gt; &gt; Hi Joe,<br>
&gt;&gt; &gt; Thank you for your feedback. Using cases was a way for me to speed up<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; transformation process based on the type of patterns contained in the<br>
&gt;&gt; &gt; input<br>
&gt;&gt; &gt; model after execution of rule 2. It was also an attempt to address the<br>
&gt;&gt; &gt; complexity added by the redundant use of elements suh as ModEquations,<br>
&gt;&gt; &gt; ports<br>
&gt;&gt; &gt; and constraint blocks. The rule below is the perfect illustration of<br>
&gt;&gt; &gt; that<br>
&gt;&gt; &gt; complexity I need your help to sort out.<br>
&gt;&gt; &gt; On the input model side (above the guard), I need to differentiate a<br>
&gt;&gt; &gt; ModBlock equation from a ModPart equation. The differences in<br>
&gt;&gt; &gt; ModEquation<br>
&gt;&gt; &gt; attributes (especially the value of &quot;nbConnect&quot;) can result in different<br>
&gt;&gt; &gt; numbers of StandardPort which I actually want to create only for the<br>
&gt;&gt; &gt; ConstraintBlock  corresponding to that ModEquation. I&#39;ved recalled the<br>
&gt;&gt; &gt; crosslink (as a bound) constructd when creating Blocks from Component<br>
&gt;&gt; &gt; (abstract) in rule 2. On the output model side (below the guard) I also<br>
&gt;&gt; &gt; need<br>
&gt;&gt; &gt; to differentiate a Block created for ModPart from a one created for<br>
&gt;&gt; &gt; ModBlock<br>
&gt;&gt; &gt; as they don&#39;t accept the same type of ports. I actually added a number<br>
&gt;&gt; &gt; to<br>
&gt;&gt; &gt; the class name to ease the tracking process from one rule to another,<br>
&gt;&gt; &gt; but as<br>
&gt;&gt; &gt; said previously, Visual Studio compiler does NOT recognize these<br>
&gt;&gt; &gt; elements<br>
&gt;&gt; &gt; and treats them as undeclared variabls; consequently, the compilation<br>
&gt;&gt; &gt; fails<br>
&gt;&gt; &gt; and the .exe file is not generated. What is/are the solution(s) to this<br>
&gt;&gt; &gt; differentiation problem?<br>
&gt;&gt; &gt; Being able to capture these differences is particularly critical in<br>
&gt;&gt; &gt; specifying guard conditions and attributes mapping. Is there any OCL/MCL<br>
&gt;&gt; &gt; expression/command to work around this issue?<br>
&gt;&gt; &gt; Thanks.<br>
&gt;&gt; &gt; Leonard<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2012/3/6 Joe Porter &lt;<a href="mailto:joe.porter@gmail.com" target="_blank">joe.porter@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Leonard,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Sorry it has taken so long to get back to you.   For the reference of<br>
&gt;&gt; &gt;&gt; the list users, I attached your original notes file.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Rule 2: The creation mechanism ensures you will have uniqueness, since<br>
&gt;&gt; &gt;&gt; each ModComponent creates a block.  The Crosslink keeps those two<br>
&gt;&gt; &gt;&gt; objects associated (ModComponent &lt;-&gt; Block) so you can quickly look up<br>
&gt;&gt; &gt;&gt; the Block that goes with each ModComponent, or vice-versa.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Rule 3: The cardinality for ModEquation isn&#39;t quite right.  1..* means<br>
&gt;&gt; &gt;&gt; &quot;one or more&quot;.  You want to use 0..1, which means just one.  I would<br>
&gt;&gt; &gt;&gt; leave rules 2 and 3 separate, but I don&#39;t have a solid technical<br>
&gt;&gt; &gt;&gt; reason why.  I will ask.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On the case question, why do you need a case?  Can you just create one<br>
&gt;&gt; &gt;&gt; rule to handle creating ports corresponding to ModPart, and another to<br>
&gt;&gt; &gt;&gt; create ports corresponding to ModBlock?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; -Joe<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2012/3/2 Léonard PETNGA &lt;<a href="mailto:lpetnga@gmail.com" target="_blank">lpetnga@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt; Sorry, I forgot to attach the file...<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; 2012/3/2 Léonard PETNGA &lt;<a href="mailto:lpetnga@gmail.com" target="_blank">lpetnga@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Hi Joe,<br>
&gt;&gt; &gt;&gt; &gt;&gt; Please find the requested information in attachment.<br>
&gt;&gt; &gt;&gt; &gt;&gt; Thank you!<br>
&gt;&gt; &gt;&gt; &gt;&gt; Leonard<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; 2012/3/1 Joe Porter &lt;<a href="mailto:joe.porter@gmail.com" target="_blank">joe.porter@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; Leonard,<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; Can you post a few screen capture images of the metamodel structure<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; you&#39;re interested in and the proposed rules?<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; Thanks,<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; -Joe<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; 2012/3/1 Léonard PETNGA &lt;<a href="mailto:lpetnga@gmail.com" target="_blank">lpetnga@gmail.com</a>&gt;:<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Hi everyone! I&#39;m a new user of the GME/GREAT tool suite and I<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; have<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; some<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; questions for you guys.<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 1.  I have written a rule containing a pattern including an<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; abstract<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; class<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; (at level n). I want GREAT to use this rule to create an object<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; based<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; on the<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; pattern provided as input. However, in my next rule, I need to<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; get<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; access to<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; the inherited classes (level n-1) in the next rule ie the real<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; objects<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; abstracted. Since GREAT does not allow me to represent<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; inheritance<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; (as<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; specified in the Metamodel) can I just (in the next rule) connect<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; real<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; objects at n-1 to the real one at n+1 as children and parent by<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; bypassing<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; the abstract class? If no please clarify this point to me. I will<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; also<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; welcome any more efficient way to handle this kind of situation.<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; 2. Is there anyway to &quot;debug&quot; or test the transformation rule by<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; rule<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; prior<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; to running the Master interpreter?<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Thank,<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; Leonard<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; great-users mailing list<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; great-users mailing list<br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt; great-users mailing list<br>
&gt;&gt; &gt;&gt; &gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; &gt;&gt; &gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; great-users mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; &gt;&gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; great-users mailing list<br>
&gt;&gt; &gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; &gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; great-users mailing list<br>
&gt;&gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt;&gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; great-users mailing list<br>
&gt; <a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
&gt; <a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
&gt;<br>
_______________________________________________<br>
great-users mailing list<br>
<a href="mailto:great-users@list.isis.vanderbilt.edu" target="_blank">great-users@list.isis.vanderbilt.edu</a><br>
<a href="http://list.isis.vanderbilt.edu/mailman/listinfo/great-users" target="_blank">http://list.isis.vanderbilt.edu/mailman/listinfo/great-users</a><br>
</div></div></blockquote></div><br>