Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [ATL] A problem about resolveTemp
[ATL] A problem about resolveTemp [message #71001] Wed, 09 January 2008 11:09 Go to next message
Mikai Yang is currently offline Mikai YangFriend
Messages: 149
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.

------=_NextPart_000_0073_01C852B0.1B871B20
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_001_0074_01C852B0.1B871B20"


------=_NextPart_001_0074_01C852B0.1B871B20
Content-Type: multipart/alternative;
boundary="----=_NextPart_002_0075_01C852B0.1B871B20"


------=_NextPart_002_0075_01C852B0.1B871B20
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: quoted-printable

Hi,=20

I am a novice in ATL an play around ATL with some simple example. But I =
meet a very strange problem when I apply thisModule.resolveTemp() to a =
situation. Now I will detail the problem to you.=20

I create a source metamodel as Figure 1 shows. The Society contains a =
number of persons; the Child is the sub-class of Person, and has a =
boolean attribute denoting the sex. If it is true, then this child is a =
boy, or she is a girl. A person probably has one or more children. And =
the child has the corresponding parent.=20

I also create a target metamodel as Figure 2 shows. Now, name is no =
longer an attribute of person. Instead, a person will be associated with =
'Name' class to represent his name. A person has boys and girls.=20

Figure 1. The source metamodel. Figure 2. The =
target metamodel.=20

Now I develop the atl file in order to (1) map APerson to BPerson if =
APerson is no instance of AChild, (2) map AChild to BBoy if his sex is =
true, (3) map AChild to BGirl if her sex is false. We also require the =
reference mapping so that in the resulting model BPerson has boys and =
girls. See the following code. But it doesn't work, despite no syntax =
error. If I remove the red part of the code, namely, disable reference =
mapping, it will work. Even though I change the red lines to the =
alternative codes commented(See code below), it doesn't work either. In =
either case, there is no error dialogue popup. In the console, some =
exceptions are printed out but not readable.=20

I attach the project here so that you can play it around if you like.=20

Please help me. Thanks.=20

Michael.=20

------------------------------------------------------------ -------------=
----------

module B2bG2G; -- Module Template
create b : mmb from a : mma;

rule B2B {
from=20
child: mma!AChild(
child.sex
)
to
boy: mmb!BBoy(
name <- name
=20
),
name: mmb!BName(
value <- child.name
)
}
rule G2G {
from
child: mma!AChild(
not child.sex
)
to=20
girl: mmb!BGirl (
name <- name
),=20
name: mmb!BName(
value <- child.name
)
}
rule P2P{
from=20
aperson:mma!APerson(
not aperson.oclIsTypeOf(mma!AChild)
)
to=20
bperson:mmb!BPerson(
name <-name ,
boy <- thisModule.resolveTemp(aperson.child, 'boy'), =20
boy <- thisModule.resolveTemp(aperson.child,'girl')
-- boy<- thisModule.resolveTemp(aperson.child ->select(e|e.sex), 'boy')
-- girl <-thisModule.resolveTemp(aperson.girl -> select(e|not e.sex), =
'girl')
=20
=20
),=20
name:mmb!BName(
value <- aperson.name
) =20
}

------------------------------------------------------------ -------------=
---------------------------------------------
------=_NextPart_002_0075_01C852B0.1B871B20
Content-Type: text/html;
charset="gb2312"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
<META content=3D"MSHTML 6.00.2900.3243" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2>Hi, </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am a novice in ATL an play around ATL =
with some=20
simple example. But I meet a very strange problem when I apply=20
thisModule.resolveTemp() to a situation. Now I will detail the problem =
to you.=20
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I create a source metamodel as Figure 1 =

shows.&nbsp; The Society contains a number of persons; the Child is the=20
sub-class of Person, and has a boolean attribute denoting the sex. If it =
is=20
true, then this child is a boy, or she is a girl. A person probably has =
one or=20
more children. And the child has the corresponding parent. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I also create a target metamodel as =
Figure 2 shows.=20
Now, name is no longer an attribute of person. Instead, a person will be =

associated with 'Name' class to represent his name. A person has boys =
and girls.=20
</FONT></DIV>
<DIV align=3Djustify><FONT face=3DArial size=3D2><IMG=20
style=3D"WIDTH: 237px; HEIGHT: 318px" alt=3D"source metamodel" =
hspace=3D10=20
src=3D"cid:006c01c852b0$1b8100a0$a61bc389@macs.hw.ac.uk" =
align=3Dbaseline vspace=3D10=20
border=3D1><IMG style=3D"WIDTH: 215px; HEIGHT: 321px" alt=3D"Target =
metamodel"=20
hspace=3D10 src=3D"cid:006d01c852b0$1b828740$a61bc389@macs.hw.ac.uk" =
align=3Dbaseline=20
vspace=3D10 border=3D1></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Figure 1. The source=20
metamodel.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp;&nbsp;&nbsp;&nbsp;&nbsp;=20
Figure 2. The target metamodel. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Now I develop the atl file in order=20
to&nbsp;(1)</FONT><FONT face=3DArial size=3D2> map APerson to BPerson if =
APerson is=20
no instance of AChild, (2) map AChild to BBoy if his sex is true, (3) =
map AChild=20
to BGirl if her sex is false. We also require the reference mapping so =
that in=20
the resulting model BPerson has boys and girls.&nbsp; See the following =
code.=20
But it doesn't work, despite no syntax error. If I remove the red part =
of the=20
code, namely, disable reference mapping, it will work. Even =
though&nbsp;I change=20
the red lines to the alternative codes commented(See code below), it =
doesn't=20
work either. In either case, there is no error dialogue popup. In the =
console,=20
some exceptions are printed out&nbsp;but not readable. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I attach the project here so that you =
can play it=20
around if you like. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Please help me. Thanks. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Michael. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2> ------------------------------------------------------------ ----=
-------------------</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV align=3Dleft><FONT face=3DArial size=3D2>module B2bG2G; -- Module=20
Template<BR>create b : mmb from a : mma;</FONT></DIV>
<DIV align=3Dleft><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV align=3Dleft><FONT face=3DArial size=3D2>rule B2B {<BR>&nbsp;from=20
<BR>&nbsp;&nbsp;&nbsp;&nbsp; child: =
mma!AChild(<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
&nbsp;child.sex<BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
)<BR>&nbsp;to<BR>&nbsp;&nbsp;&nbsp;&nbsp; boy:=20
mmb!BBoy(<BR>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;name &lt;-=20
name<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;=20
),<BR>&nbsp;&nbsp;name: mmb!BName(<BR>&nbsp;&nbsp;&nbsp;value &lt;-=20
child.name<BR>&nbsp;&nbsp;)<BR>}<BR>rule G2G=20
{<BR>&nbsp;from<BR>&nbsp;&nbsp;&nbsp; child: =
mma!AChild(<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not child.sex<BR>&nbsp;&nbsp;&nbsp; =
)<BR>&nbsp;to=20
<BR>&nbsp;&nbsp;&nbsp; girl: mmb!BGirl (<BR>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp; name=20
&lt;- name<BR>&nbsp;&nbsp;&nbsp; ), <BR>&nbsp;&nbsp;&nbsp; name:=20
mmb!BName(<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value =
&lt;-=20
child.name<BR>&nbsp;&nbsp;&nbsp; )<BR>}<BR>rule P2P{<BR>&nbsp;from=20
<BR>&nbsp;&nbsp;&nbsp; aperson:mma!APerson(<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; not =
aperson.oclIsTypeOf(mma!AChild)<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;)<BR>&nbsp;to <BR>&nbsp;&nbsp;&nbsp;=20
bperson:mmb!BPerson(<BR>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name=20
&lt;-name ,<BR>&nbsp;&nbsp;&nbsp; </FONT><FONT size=3D2><FONT =
face=3DArial><FONT=20
color=3D#ff0000>boy &lt;- thisModule.resolveTemp(aperson.child,=20
'boy'),&nbsp;&nbsp;<BR></FONT>&nbsp;&nbsp; <FONT color=3D#ff0000>&nbsp; =
boy &lt;-=20
thisModule.resolveTemp(aperson.child,'girl')</FONT></FONT> </FONT></DIV>
<DIV align=3Dleft><FONT size=3D2><FONT face=3DArial><FONT =
color=3D#ff0000>-- boy&lt;-=20
thisModule.resolveTemp(aperson.child -&gt;select(e|e.sex),=20
'boy')</FONT></FONT></FONT></DIV>
<DIV align=3Dleft><FONT size=3D2><FONT face=3DArial><FONT =
color=3D#ff0000>-- girl=20
&lt;-thisModule.resolveTemp(aperson.girl -&gt; select(e|not e.sex),=20
'girl')</FONT><BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp=
;&nbsp;&nbsp;=20
), <BR>&nbsp;&nbsp; name:mmb!BName(<BR>&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value &lt;- aperson.name<BR>&nbsp;&nbsp;=20
)&nbsp;&nbsp;&nbsp; <BR>}<BR></DIV></FONT></FONT>
<DIV><FONT face=3DArial=20
size=3D2> ------------------------------------------------------------ ----=
------------------------------------------------------</FONT ></DIV></BODY=
></HTML>

------=_NextPart_002_0075_01C852B0.1B871B20--

------=_NextPart_001_0074_01C852B0.1B871B20
Content-Type: application/octet-stream;
name="mma.gif"
Content-Transfer-Encoding: base64
Content-ID: <006c01c852b0$1b8100a0$a61bc389@macs.hw.ac.uk>

R0lGODdh7QA+AfcAAAAAAAAAgACAAACAgIAAAIAAgICAAMDAwMDcwPDKpgQE BAgICAwMDBERERYW
FhwcHCIiIikpKVVVVU1NTUJCQjk5OYB8/1BQ/5MA1v/szMbW79bn55CprQAA MwAAZgAAmQAAzAAz
AAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZ mQCZzACZ/wDMAADM
MwDMZgDMmQDMzADM/wD/ZgD/mQD/zDMAADMAMzMAZjMAmTMAzDMA/zMzADMz MzMzZjMzmTMzzDMz
/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPM ZjPMmTPMzDPM/zP/
MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYz zGYz/2ZmAGZmM2Zm
ZmZmmWZmzGaZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMmWbMzGbM/2b/AGb/ M2b/mWb/zMwA//8A
zJmZAJkzmZkAmZkAzJkAAJkzM5kAZpkzzJkA/5lmAJlmM5kzZplmmZlmzJkz /5mZM5mZZpmZmZmZ
zJmZ/5nMAJnMM2bMZpnMmZnMzJnM/5n/AJn/M5nMZpn/mZn/zJn//8wAAJkA M8wAZswAmcwAzJkz
AMwzM8wzZswzmcwzzMwz/8xmAMxmM5lmZsxmmcxmzJlm/8yZAMyZM8yZZsyZ mcyZzMyZ/8zMAMzM
M8zMZszMmczMzMzM/8z/AMz/M5n/Zsz/mcz/zMz//8wAM/8AZv8AmcwzAP8z M/8zZv8zmf8zzP8z
//9mAP9mM8xmZv9mmf9mzMxm//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//M Zv/Mmf/MzP/M////
M8z/Zv//mf//zGZm/2b/Zmb///9mZv9m////ZiEApV9fX3d3d4aGhpaWlsvL y7KystfX193d3ePj
4+rq6vHx8fj4+PD7/6SgoICAgAAA/wD/AAD///8AAP8A////AP///ywAAAAA 7QA+AUAI/gD/CRxI
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyArHnhHsqTJkyhTqlzJ kuWBkDBjygT5buAi
cThzilt0EMBAnwIBCAUKNOi/okaR+iy6dGDNmVCjSn3YsqrVq1hJTt3KtevT rhO/gh1LtqPYsg3P
ol3LlmrWt3Cxtp1Ld6HaugTv4t3L16JJXn0DC55L8uXgw4jB6k3MuLHHxY4j T1S6ECnad5SHDj1K
UKjRn5xBH7UsubTEkXFTq35n2LRrjV9v6sTJ0yDTz0k7h97N2zNoyK+DO1xN PK7w4xT1QlrOnLnt
0Ux9a4b+c7NC4MizF8S+lrt27d7L/ob/fnz8WOCUc5OvG+9AvITmFQ88QO8f vQOA19e9/55ta/pj
8aefR/fl11c8BhqEIHsADkjQAa2V5xovDSZWoEak4SaafJJlaBCFkQkoXHwW eQgWhfWV1l6Kg5Eo
2IUOMgQiWy6S1V5/McYEY0SoFVdchBOhmGNG6XV0o0AL/hPbbLT1JBppmXGm 1GI7Dvmdj1jWaOVr
yjXXXE/SWXcbfFuWKZCWHKFpZmRqwrbmlm1mFOebiM15kZ105qnnnnz26eef gAYq6KCE5jUQJEyK
A0lClk3nkIcm4lkoTQOxkSgbz+kGXXS+bRqao6NpKOmkjyU2KqlpZqlqS6jy dWpI/q+2ilGsH9Eq
61xA3tpqj+/wkqCurdoK7HrCDruRiV4ZO1Z6Y+KFmbLEHprooggpBWqa0Lb1 laVMYlpQo7xVJ524
4jb1W7Y0tohudwix4e6772aqnpQbmpvWupepiy9Zxc5a2UPI7jvQjv3eGQ9r FI6Uq8AOCQnWwThG
JSK+DtNVoUD3sbWin0eaVvBGGwvXsX4fQzVjYxUrBC5oTRWZbFTMbsapzLoF jBB+kkFYWskPuzfg
xHXx/FHKg4bMldAQVfmny9/SqxDRB32FKJPUOvktzU1DOd7IDG9Eoa/xtDdS pZfKi9t0URLlGQBf
Qd31y+K9HXS78MLLaLjzIoS0/txk5su3tuz+na7fghdu+OGIJ6744ow37vjj kEfOp9ReOge45BXF
FsnmnEdS23PNdmadp2qvDSpQe68bGz6st47P56KPXvPstGvqtJKYZ15p3fEu u13uyZkKfFjCDx9R
6hIhn63yEDGvrPPDGX988dJHX2f1VFGPvV3aby9VYd6/xivO4ZeG2snl75x+ cNCv75f7rrUPP/Hw
M321zd93aq+URNnOP8sCs19fngXAAtbudr2ZX6kUOBPKVa5q/GKgQTTXuc3B rnYxG1fpgkIz68jP
WKtzHesuyEExmU1DeesUZz44rG3xzl2Bk6BT9CXDM9GwhnqRzWxIyDR73UaA /jOsoQ1LpCm01auE
AWMhsJT4OyHiTjBMvFUUgwgmZAHxcFMc4t0qgz++USiLT1yf0sI4QIHQh3y5 c9t2VsVGkyQEaIUb
I1cyxouISQWO2eLaWoCkPDwWSo1rqeNBkqSxi+nJj4cBI5IMOSBANkaRg2Rk aeQ4IuE4kkEsIqLV
/Hc08qCvL5dsmugAuL8uwkoq+sta/1j2Q4j46jB6FOWG6OVDU1IKZhjcTZQM OBE0BoaSjIGkRoCJ
mFDObT3GNE0sjxmcZW6JmBxyDDT7lEyYQLKahXKmNfeiTT9dC3R4s48vGeLA ykGFRNMM1BWDJEkt
LqKCFqyWLkGnQSSyrSHY/iTU6WZ5EQG9JIQiJOGmVum/lvVGLd1UoAtfeM5x OnGCMXxo3+Im0esg
RIc64WFB8xa1ilq0RPozIQqb6NGOEq6kJI0gSiF60pVqUaUupSJMY0rG89DU KW1MzU13ytOe+vSn
QA2qUIdK1KIa9ahITapSlwq3GypUWlQjDA6hOhsI5pKfEonUVAWC0ZwI9HZQ OiACzTUmYQZqSUwS
aOh4uT/+GXFeZgUUWnd4wlImEFy7FNVW/8Gt2XjLdzJ96vVkKMy4/qmwe3Xq /BBL2O4t1rHwY6wE
JctAygo2kYmFYmYDY1g/Wfaxg50sZN332ciOdn05Ta1WlsqLd9iRqV4r/sxr YXuRg5WknbQNi0nG
ltuM0GO3meytRWwrSOFqpLW/Mu6dlIst5rrJuXKCbnSlu1zqvs+6usNu8Ob3 zayF0ytLCWk9qeMp
t5ILXVc0aHfyCtaNshe9nOTse/FmV5fZUp/xHaBmZnY28RLUvPja50i1dV/t vnSpYOysXKmqE6tG
c69Tq6o8Q1dgcj50rhmd8Czr+19r3UbBh7VJotT6JEftt5QdpgyIPSvitNaV vmIdq4ovTLZuRbSx
mnVigmmcYyHuWMeKrSxCItxg26zVh2z9qI8vOmKzlQ7JSdmvkjcbkbxCeaxT xjFnebxlHat2VVwu
I5B7TGVmylNlsmPc/o+32JAK72vNZ2aIm9/8ZVX9S2WS+22Q7Xm2gc5ZWUdK MIR8RY/gVs9oNd1L
TfCDW8y57ccLQnTkoAnn1uSTYekMycJicmloJXQm7tm0TDotK1J7RJCE5Mon 0WXqjxAy1V1Z9a0y
PRVYF7csr5QVItGSsQ/NFiwO/dOnyyLqRncl2HRqtVR4lRJREzu5W5L1afFC 6+BUW8yMuXZjds2m
SfrsOJKupGu4PRhlk3nc30YMssGjHXKjRWcYAqcsm9qYgLnbRumGiBFN+OQ/ Txcq4eWUekxMne4a
5N4BWveLSZlAm+KSn1fG8n3DPZdpriw3dnU4wHO51rtShOJzAeRb/jFewu9G pWBSRmJvRPoZFUZE
2iE3dmhn4m+ODHsuIJ95I2X+y3xP29oKD1HQzYycm3sb2s7Kjrkds/Rtvkbb 32n6AiVjdCtVvYGR
kbp+EC4TYUJ9T1/fCBivTqih33IvWv9T2rlHl7DjN5KGZjtFJ0L2PK0zzQW5 udSmVRFI2SY+a8/R
Ok1eEHLvPapO6mGcf+Idt/Np8BKpkoEw7FUNjzSV6g0KcOouKGZhlSIzAhDl mySv/2rIoFNCSOAT
RyEEjX4nC784LXV5z4GZfXuFRlDCVsvXsmGd8+lj3oqDdWOXCp+nx99p8m+q HL7P2/NJRD6TXWxk
e3acpcyPN/TlQ07T5Xe/+Cutc1ak31Ljgx+l3o9p+s1f/vCL/yrkn/v324/+ 85d0/eG3v4H3z//+
+///ABiAAjiABFiABniACEgWAQEAOw==

------=_NextPart_001_0074_01C852B0.1B871B20
Content-Type: application/octet-stream;
name="mmb.gif"
Content-Transfer-Encoding: base64
Content-ID: <006d01c852b0$1b828740$a61bc389@macs.hw.ac.uk>

R0lGODdh1wBBAfcAAAAAAAAAgACAAACAgIAAAIAAgICAAMDAwMDcwPDKpgQE BAgICAwMDBERERYW
FhwcHCIiIikpKVVVVU1NTUJCQjk5OYB8/1BQ/5MA1v/szMbW79bn55CprQAA MwAAZgAAmQAAzAAz
AAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZ mQCZzACZ/wDMAADM
MwDMZgDMmQDMzADM/wD/ZgD/mQD/zDMAADMAMzMAZjMAmTMAzDMA/zMzADMz MzMzZjMzmTMzzDMz
/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPM ZjPMmTPMzDPM/zP/
MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYz zGYz/2ZmAGZmM2Zm
ZmZmmWZmzGaZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMmWbMzGbM/2b/AGb/ M2b/mWb/zMwA//8A
zJmZAJkzmZkAmZkAzJkAAJkzM5kAZpkzzJkA/5lmAJlmM5kzZplmmZlmzJkz /5mZM5mZZpmZmZmZ
zJmZ/5nMAJnMM2bMZpnMmZnMzJnM/5n/AJn/M5nMZpn/mZn/zJn//8wAAJkA M8wAZswAmcwAzJkz
AMwzM8wzZswzmcwzzMwz/8xmAMxmM5lmZsxmmcxmzJlm/8yZAMyZM8yZZsyZ mcyZzMyZ/8zMAMzM
M8zMZszMmczMzMzM/8z/AMz/M5n/Zsz/mcz/zMz//8wAM/8AZv8AmcwzAP8z M/8zZv8zmf8zzP8z
//9mAP9mM8xmZv9mmf9mzMxm//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//M Zv/Mmf/MzP/M////
M8z/Zv//mf//zGZm/2b/Zmb///9mZv9m////ZiEApV9fX3d3d4aGhpaWlsvL y7KystfX193d3ePj
4+rq6vHx8fj4+PD7/6SgoICAgAAA/wD/AAD///8AAP8A////AP///ywAAAAA 1wBBAUAI/gD/CRxI
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPEdwMhiRw50qNAkCY5ovxH sqXKlDBPDlyEr6ZN
fIsMAiC4c+fAnjwFAl0Z8+JKmjdr5izoU+i/pk6BCiVa9GXVg1SvftQqk+vG rFrBem0oNmXZsRHP
xlSbESrUg2//sbWK1mhduXchzv2a1+Jej3/zBsY4uC9XkPQOCExMz3BFXvHo FXZMOWM8XgghxwTA
mfPTz1INXiY4urLpi3EZamYYTzHGzqkNJs6M+bTtiW4//9xdkO2BxlVdK/zN FTbD2LdhljbIq7bJ
1QoZjzXutDps5Mlh8jrwrrv37++E/lPcflB69vPZD8QbuHxi+4LE0cs/HLJl SceT5+tneDSpUp1B
xSUggLm5ld9+CGKl34EJNtiVfAw6mGCEYUloYVoLXqghWRlu6CF9H4boIIUi lgiiiShWp2JUvIEW
VEYkpigjYDPWaFqMNl6V24rYeaUZSO/lKGRCK9l331g4DinYTP7hBOBuTQEV pW5UhvagkhYmyReW
F4q1iDhghinOUkxRCaWZVr6lJZderQkjm1km5yacVc1pF50Ngqfnnnz26eef duIp6KCEFmrooYgm
quiiIh4VyaOQRkJmiy7yRl2UgWrkaKSPTsqjmWf2lKlZA7Fh6qmnctTUqISV iiqq/nRNeBerd1Y4
4qzz0Xolgrr2VtWOCcXVa69bokXsRMMqGt47zmnYGneMxvRekNmtNlu0VUFX XnwaFVilaM0KRC22
x03pbXXcDgfcVeIxtx65Y12b2bswpZuQvTABi1CPQwY57kX//tMcvOmFK5C2 EkHX3MAES6heuxFd
exmz9DZc2aaceormxk91xmLHPl0KMl4Wt+nqq6ZSdmzDK29V8onotQyvzHq9 DPN5NNtcq86E5szz
jT8X6rPFOxo3pXUeaxp0z0tvxC+o+DWNJ3cQSx3zTJx2+iSLRydttGdCeTw0 wSuhnKqxVtdZ1NMG
jT1zWzx5HLJnc4NNkNvk4j2Q/t7R8k1y2jD57TfghBdu+OGIJ6744ozrxx2g kEf+XdW2PS755XtS
DmFIYoYJiU6XUsdfrpx3Ls7nTIkOcshMDb7QUaaPCbrXIlv6met7zxS7xtep KHeVuBNZauxszA52
72HbrVvwf7NBvPFuGQ28hJhX/2eu1mffHfW4bn7zfi0zn+yI2pe/PYTmV899 Xayqvm/bJt/K/q8v
Bgv/9wumr72OSX+7OlT6w9z60OY9W+Wpe1fD36DeUbEQMc+BsyGPhQb2mwd+ yDXtUU+DNCOZxhUk
SObxyluQsxx5eXAgCCON5iziraN9MFwBY1wK3eU0ulUKVCZEocGWxjb4rGsh /viKieZmGLRzWcdM
KxxIEE2SxCUyLjVN/GFKnKhEKearfu/DUw4JQkSNdBE+xcEiXAhFLYZ55Iv/ aM0JAQbDHbLxXlZc
o0UkeBAqMuQ3JlSjHOvVRosEyY571IgGtwgRQj6LF3EM5HACyEg+JVGRRYod 6uJGu/7FSpEKEsiX
TMe72n3sk/pKkwXZVLbnpc5rcEFl8n6iyqlgUiGNjKWeXik80tEykwW85d1k yctRcumBvsQSMHXZ
tl7Kkpi+siUyd5WdYAbNjcvEWTRlNU3wVdOa11RmNqW5TSjZrZI9+aYld7ZN I4bGXCZxJjLVSUx2
6tKdIhrn7GwDzxI9rYcG/uymbSDzDkLqkyKWM6b1HvnO0nVukqyknRhd1k3Y cRJ6RwTVOc/0k3oq
qZSmK94pjxe35E0UaZ6x6JAEar5/Cs6kCDGSSLZWt0/qxn1/26ZYzJYyAvnu hji9X0PlhNLbiFRI
J9VnUHfq057S06in+ek/l8rUpjr1qVCNqlSnStWqWvWqWM2qVmGJQG7mk1cG FRNCL8lTgUBCkk5T
ZyRNN9aN6auWCWQJWstkO0pVdICb7BzvAsRXij5FfLp7KF1d6k1Xyu8feRXT Xv2KU9btBLCa3N3W
ciqlux42sWFarEvTxBvIIlayg30pXzE1QOdltCM+8axpO6dRpR0WSdpU/ttr 4xfXq6i1q82kLTUJ
WFvZHnB+ufTtbmEb3KLcFri9Ne4AiZvctSxXt7lVYHG/apK3UlKntn2udJ22 0NAy07mz3W63urvQ
8f2Wt1esK8fuBl1soje61O3Qe8sa39iKV2XtlS9zvZrd8NY3qfnFHkn7JOAB e0dZDBRRYpQKIcgc
gKDoac7EGgcSzfBCnYOsIIUP9q4QImg2HVxjuszouMVAmHD20qNjsCMcfy6O chrsC3LE4+LFlYXE
qhot6+r4Qkyu0MNwC5VdBZJiaDKuxkRuIAtZecO44AvHckTywYxMkafNEMo8 lEgMByLljhARjTYL
Z5RauZMtEzmRz1Ey/grVXMS+HrEpZgakRgIG5pcZUbRQ2bKcMRLDPRNNdKqL Cxr9XBE9oxm15B2Z
jWLzxTr7kcpn1op1vculLjqaIl3+B6GXPGRKV5rNl5ZIl4G8mRe5EGpsCiKW BcmQTL/yyZAG6EJW
XU2ImVkiK4xxU6lya4hQjtRM1TW4/Phg2Zw4m4lRs6u3Ja7a0PqppD42j7kY a6fGgyrSNgiMDw1V
FW/ahwihBx2vOrBQ05A920HkVlHIrDkeIN1sRip/1xlWz+F3mms96GQ52xEG l8ihet23WwO04099
09+NCmzAQyvm4/UuegbnCcIdqHDFCnxAjN0smib+IYyy9t7RHCa+/vVLb/sW 1OS3FHnISd5Olp98
uil3ecxRTkuVL9PmJYd5zWW+c5q/Euct9zkmgf5OA+tv3bhEOniVvnSmk8rp gYN61KWeTqpX3er9
xnrWtV4srrfK628C+9f1+c0yuZDfY+9m0X530+vgk6v/NKf/GutasfvF7uTE O4b0ThGOb5jvyNLl
PY96y8EDuPANebtwMWl4x9QGJdU2HPK6BlO0zAYk37b7xMzN92tH3qpDlWm9 wdTW/hJVrmy9+KRr
JtSKZ/bicwclYwHgdxMB3OIM/1bdPgqa69T+364Hk2YbO9Gzb9yoqxVTawO8 8qK23vmnP3z0qxv4
56d379Mf/elYXmr2gdv19wk/CGaFP8Yx27BAyMud9Tmt+yqh/bsjh77o5Z9N o1tP3hfDP8jnT/js
77/+9CVT9idA6wc0BZh/B/h/1xR6AEh/gPeAEBiBEjiBFFiBFniBGJiBGlgZ AQEAOw==

------=_NextPart_001_0074_01C852B0.1B871B20--

------=_NextPart_000_0073_01C852B0.1B871B20
Content-Type: application/octet-stream;
name="ATLTest.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="ATLTest.zip"

UEsDBAoAAAAAANJYKTgAAAAAAAAAAAAAAAAIAAAAQVRMVGVzdC9QSwMEFAAA AAgAZ5CVN6z/EYjD
AAAAiwEAABAAAABBVExUZXN0Ly5wcm9qZWN0hZDLDsIgEEXXmvgPDXup7lzQ Gh9xZdxYPwDppMG0
QIAaP1+YYupj4Yo5N3dm7sDWj67N7mCd1KogS7ogGSiha6maglyqw3xF1uVs yozVNxB+D05YaXxw
B3XCFO+g3FTHCpxneSSUhe46UL5keaqi+prhEPIPuvayrc8GRKSEu9DKVY1K 2qRtQ7lvKYhWGgeU
156iF2zUt0M5BEl93DZ9TOAS5+9C5K9dqIxh4mLfW0B3gr85TugKMfAdho5j 8PTfz3wCUEsDBAoA
AAAAANJYKTgAAAAAAAAAAAAAAAASAAAAQVRMVGVzdC8uc2V0dGluZ3MvUEsD BBQAAAAIALlUKTgY
7gSacQAAAJYAAAAyAAAAQVRMVGVzdC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uu Y29yZS5yZXNvdXJj
ZXMucHJlZnN1yr0KgzAUBtBd8B0udG4SteAPOLRDC0I3paOE5KsETCI30ue3 D9Cuh3N6wdKgA6mW
CtVVdXdp6fEcqVSqyTOY1W0JYmO8wQgGSXzAycXQF3n2hWhdWKT02LWPFmuS VwETGbN1emHt+2m8
n5s/9/b7HlBLAwQKAAAAAADdWCk4AAAAAAAAAAAAAAAAEwAAAEFUTFRlc3Qv bWV0YW1vZGVscy9Q
SwMEFAAAAAgALpMoOGCxhtC0AQAAJwUAABoAAABBVExUZXN0L21ldGFtb2Rl bHMvQS5lY29yZa1U
XWvCMBR9F/wPJXu20Y7BKHbDOQVhMrEb7DWLVw1rkpKkq/773VZb7T5AmX1o y8255557Tmn/fiMT
7xOMFVpFpOd3iQeK64VQq4i8vow7t+T+rt3qA9cGwtGM8Q+2Am8jRVh3BdjV bnl4IZmyIR5GZO1c
GlKa57mv5crXZkXfphNSQWwTkl+XiKDb7SHsKeZrkKwjlHVMcWiwl0oazcAT kVooGUAuC5aAjgoY
8RSTCI51ZjhM9QKSPZeyr/NJg0Uybv117jPuZx9UboMbgqiZgaXYRMSBdeSu 6O3DMGHWiqXA/T1c
JHTbFGfsHSoPq7mDGWK02jUWrbEzGXeZYckYGD7hF4aBc0a8Z65Wj3d8T3QO 5kFnaoE5YUovxz2P
zLGi4J1kyxWlI1SCGRN6lrQ5LMHg91FL42uRLIiXpWmtrdMrLN5dlUocOBju oPCcptoKd1ylKUNW
txfTp8cOn+95NSjOUFQx35ajLpOFhc3Fo3jQOgGm/pvFzsRv6g5ZNEIKatUH Zw7ZNMq0zPhC2cSa
C3Db80L4uWkpzJ723VXLca0cE0qiRxHBqfDXSlho/Oyw9AVQSwMEFAAAAAgA w5IoOILEbaB5AQAA
KgQAABoAAABBVExUZXN0L21ldGFtb2RlbHMvQi5lY29yZa2TXWvCMBSG7wX/ Q+mubbRjMEpV1k2H
MIf4AbuN8bQG26QkqbX/fieduhVkTFwv2pK873O+knB4yFJnD0pzKfpuz+u6 DggmN1wkfXe1HHce
3eGg3QqBSQXBaEbZjibgHDIenF0+utotBx+ECR3gZt/dGpMHhJRl6cks8aRK yMd04p4kuikp72uF
3+32UPa2YFvIaIcLbahg0KDXmTTMwFKea6gJkMWW4pORlbmOoBmKl1QlYKZy A+mRJfRqPmlQMsq0
ty09yrxiR7LKf3BRNVMQ80OTMLCIEJ5TqjWPObbBwXoCU+UY6tioevMUPpqh Roovo7UujCqYKRRN
x0DxCxcIc4hB4SzOReAb/1NZgopkITY4LhzWsvbcERK9231yW4y1rBrMSFa3 IhOu0gbzFReO0JD8
7OL1fbUlX9fVJ2MUXxfmnN6epsXltn6bXqihdsH506HDGkeYCt6gf6oyqoey KHJQNgtdt/F0psj1
PDuA34Ehad53XPoEUEsDBBQAAAAIAAVYKTjf+/3uzAAAAPkBAAAfAAAAQVRM VGVzdC9tZXRhbW9k
ZWxzL0JTb2NpZXR5LnhtaYWRTQuCQBCG70H/Ydl7u2lIJprgJTpYQR26brZs 0n6EWuq/b4SMAmtP
M8w+7zMLE8aNkujBizI3OsIOmWLEdWbOuRYRXu+3E9/3FhMHx8vxKGxUHhzT NerqO+N2GbDoMoB5
hC9VdQsoreuaGCWIKQSFTI8cWCF4lZozl1+oYllJLjVhGblfqWpdD8NGhMKP QJAkpkWaKR5h6mA6
AGzgET2YvANyAuS/Y2Z3uIPIKi9kL/GsEuFYJXO7ZPgnOziD0b1m8VPTzUP6 OiD0T1BLAwQKAAAA
AADoWCk4AAAAAAAAAAAAAAAADwAAAEFUTFRlc3QvbW9kZWxzL1BLAwQUAAAA CACQkyg4q5+BehAB
AACtAgAAGwAAAEFUTFRlc3QvbW9kZWxzL0FTb2NpZXR5Lnhtaa2SMW+DMBCF 90r9D9bttcFpFwRN
USakZGLp6poTWME2wk6Bf19D0wiWVpUy3vm9792dnO5H3ZJP7J2yJoOYRkDQ SFspU2eQl4eigP3r
40Pq0fkkL61U6CcyapXcTHw2BYxxSehn0HjfJYwNw0Ctrqnta/Z+Km4St5UM u0XBoygOsmMpG9Ti
SRnnhZH445rjNzYtpKPNQIWklzPTE38JUqcSt/iPVgofhvvDQihlGr3QtsLW sZyitD1C2JeQtAv7
WeOIERozOCnZCGyByEa1VQaMvV0FNCargq+L3bp4BrYBL+P6qQvw7+MeZjJc 8z5iIA7H8NZfwhU6
0aPxm9jofzx+X14d3wPCf4GkbPPnQucLUEsDBAoAAAAAAO5YKTgAAAAAAAAA AAAAAAAXAAAAQVRM
VGVzdC90cmFuc2Zvcm1hdGlvbi9QSwMEFAAAAAgABFgpONhnOT1FCAAAQUMA ACEAAABBVExUZXN0
L3RyYW5zZm9ybWF0aW9uL0IyYkcyRy5hc23tW0tz40QQPkMV/8GYw5qDE81L j2yAWqdga80+SeCa
UuxJVoUsGVsOCb+eHlnSKJmHRrFDFtiLrEx/09Pq6f66R3aOf7hZpINrvlon eTb4bvAMHXjPBjyb
5fMkuxIDr07fjcOQRWP0bPDD9199eRyvF4MsXvDvht4Q/v7ieLYUH/CZZ+si zorBdZxuQDzBFy/x
y+GhXpom2e9rk/Dt2SrO1gnPitcAO+XFcxNylqcm0dQ4aREnmUn2wiTwTIJ3 s/R9vAKPFKvkLz4/
u11yE/SbLC6Sa6P4JE9TPitgK4zPdLDmxVtYa3T67dFvFotOk8Uy5cIWC+hF dmtd6MeUL2APhJbR
1LLe/d0y+vbg/HwRF7OPfHV+PgKFNiC/4TM7as3TS5OstVCnNRM8Ect04iCa nXDv8XsbTq5q1HTy
MUnnxuhdxCbRKf9jA8lr3HPjxDdv3v309Ukar9fJZcJXzw/iNH0lIKBs/dMq X4h4+zA1Bu70YJNB
2I5OIExOjDBk3skbk2hykOUFuNPoLEqdwtIEgm1wY6HnIiN+2aR89ObF2euv xd1zyy7PxBa6ao7n
89N8s5rxKuNGp7Z0u8hvjU8zMcsWi4se9pzFqyteONkjqoHRIEFWbssCcZQr i/vRXZHN0cFRMA6O
EO6Q+8ag9I4QGotrZITQo2gMFxR25LSl3k2rOJ4a45iZJBatV8kqNbr+pUWI 0RFiY7hirxtCbRDU
AaElhNoWCkpIYIFIZjVy5ntoYmyFM5+lr9ailL27HE1t+2DcZMvq8dK6+oVd PLHbTsCFZExsLgQh
KSGUdGqh1AKJOhBBqSSwbDgVSqg9WVZ8nafX3Fybpx37+HOSzbf7ODEmbdiD dq54eT+5vUPDZdG7
x0Qdhv2azfllkvG5LdURczOttGtLxKIGb22zBi8KjDtnTj9LQyN3yrrsh+lB ks3SjTg0COAHG/Iy
jYuCZyMbzFgyxIdRWBl7xhdLY4fUw/OidM1V959aHFG3rW6rtENvPbkVLUWf kBP7Ey+X6S30MD0K
ZjMN6spDpgEN9phWTXJvsxxhwm9Ksk57TN5urMtkYqQ6YxqWpVNcIwsk6EAw wbXiGnZCMLFAqB2R
WrpjGSlG9gAT/DFcsWeBhB2IEIRjcWWdEGLTgpAdIkPYzOMtFhlNp7a4gPXC MVwxtkFQBySC5nUM
VyuEMAGhDpDQAmHeWFxZpy3Mt2mxI6gnlMBVPpAKEdbClTpAjA8khBFA4IE6 bbGayzoQEOKwDgRw
N4QgG8RrQ44PZ8vyE07c6bx6p4aGg+J2ua3KipDUQloJc+grY/G+qAKwYbN2 wW+KCt1Yvdy+poJm
c/v34f0BeO3HxR3cpnk8HwBFwgFqO13M36w/bsdCzVjUjGX8z/p2vlmqSOQ1 0Bm8aKgG0dA+Ce+2
JjGsqQ7SZhBO/NsxmOzkF8RcjWxUI71q1SzfFdj0gIfVfoop0JNmm8UFXxXx RcoruTpaagdd1/Eq
EUPNuBBc88E6zQvxLrQO13A4uOBXSVaO8WwuDnzN8lpNMN6ErTaIUfS4USw9 hT1Hl2LXTcL4SX3P
dnQ9JvtzfR3/24hQB2WmXMJhbsE1EN85mf6Ml63sP79BGm3a/Qp1g2INVfEy b26TQviNN6giX/GK
KO6GlDJ41TCKjnqI5LjkshqyUo/UhzS+ItTVgVrKJExnoj+0TwoMDlA1hR2a Io311NMNovYzqStR
bF+JEp1SuttKrUHpR8jSKnbcaAJGMz5I5qDEb7IdsSrdZbWRsEAD81WY5A5C KhjRaIskLCphWxfs
SGGopjDSspaW+reb0Yv06K4Fh3mfWe8pWY85UiHDT0aFjDwpFTKd9YztRlD/ WipkblTI3KiQhRpY
oMJaVEhrxlS1+V4Dow1B4UdmTNqXMXftE330GIzp48+MebhjHZHW+WQHqvXp k1Gt/5Cu0/f3RbU+
PKU6GO5GgP9aqvUjJ6oNPAnza1iowpBGW6TCsArDngojkpGDmpE12qhkZNIQ 4P4Y2fc1jBz0ZeRw
R0YO+r36aw2UCspkqeYEMKmbtttp5sYVOj4KAoV6gtBNHXLN+CBq56EqDz3F htBZeYilZXmRV4PV
o8pioGpSJ9HhLqXtjvbu+hMyg5flmASqT+3rBgMd4aiw8NFfkeE600JJX7jO fdw3N0WZN6d/5Gkm
7JjMUb/2yimZVVDIalCE+2X8nrKxjXSNvIg8evTYYsHvGQqAN0cnJSp+18ih vSJnH/vd8b4wYg5s
RDxHNtKGVORriKdnDWkf9Z/oKYJ9PoX/VHsRPrjrfHjGIg3f140j2OOElw2p 6wzc9KbhQyvKg9O8
31dktgKBPK8f+WsPqUT7RaSHhq6th15rpNWK72qth4mrWkr6qL13EpaLyZ7S LV+2qtRWSv22md7v
H1VN/Zdvuf1KLuRoUeS1LXLL5/oIJuxlTsdI5LXOUkS+i1NxgcxCXOLKGxUX anBEg2tldZOku58R
seatXdOG6loD0kyQBgW2CVTTSyDUzOjLS5b2RujVtLq7NiwI7a/X/ZSpjNE+ nPOZyj5ZKkPYjcoQ
caMyRN2oDDE3KkP+J0ZljP5vqCz4xKjM9x+DyvygD+f8J6nMpF2SEvyXtBtv kcC58UWho6Uk+scs
ZXRflv5HyoPbFyYIe27lASMNnXsaHJa4hjSRBkc0OKzBUc2bU6LBMY19VINr dfahZFwV1+rsI3lc
VnGtHzDV6xKdXyINTuMXEDY4XOOwBodU+wjR4Fr70Xw5xTQ4ovm9gKfBUQ1O 9xxMPkfY/KJqf+W/
9W0Xsf38gDQT5IYGzYS+5b//Lxxo3/Lf81dkx4fAm/D5N1BLAwQUAAAACAAB WCk4aCNCZDUBAAD1
AgAAIQAAAEFUTFRlc3QvdHJhbnNmb3JtYXRpb24vQjJiRzJHLmF0bJVSTW+D MAw9J7/CPQEScODY
7jJ2QDts49A/AG26IiUEBVoNTfvvS+zw0VY7LBKyY/vZz48ofbxIAXlWF1mx gySBN4rshepkNQh+
MMIaqGELStVwMlpBhZdqx7khdA7fnGGKM7DncG7kEWs2zy/ODynOMJH24ovu EWeDJrfWI07Y5Lke
p/K2UgKeEnCWQh4Xc4ZJD3m3bmhD7FrJCyJoEOFYxH+IqV1yYmob/cnTfva0 eoAV34kuUfhsjPTD
C+vCDLyljFwJ8UB3mXTHeobOvMusvBG46oTpdbtF4iX6vh/xngpSfZCv/X7s xMcpXLaMqHa1Tu0b
Ir37hvNSaGKns/tdjvBwbnp6MakRvZZX4R5OOI3HfWIIbHVgdfg3MnAyB5HD IXYR1Ou5lvNBTd9r
1jNyeSvpL1BLAQIUAAoAAAAAANJYKTgAAAAAAAAAAAAAAAAIAAAAAAAAAAAA EAAAAAAAAABBVExU
ZXN0L1BLAQIUABQAAAAIAGeQlTes/xGIwwAAAIsBAAAQAAAAAAAAAAAAAgAA ACYAAABBVExUZXN0
Ly5wcm9qZWN0UEsBAhQACgAAAAAA0lgpOAAAAAAAAAAAAAAAABIAAAAAAAAA AAASAAAAFwEAAEFU
TFRlc3QvLnNldHRpbmdzL1BLAQIUABQAAAAIALlUKTgY7gSacQAAAJYAAAAy AAAAAAAAAAAAgAAA
AEcBAABBVExUZXN0Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291 cmNlcy5wcmVmc1BL
AQIUAAoAAAAAAN1YKTgAAAAAAAAAAAAAAAATAAAAAAAAAAAAEAAAAAgCAABB VExUZXN0L21ldGFt
b2RlbHMvUEsBAhQAFAAAAAgALpMoOGCxhtC0AQAAJwUAABoAAAAAAAAAAACA AAAAOQIAAEFUTFRl
c3QvbWV0YW1vZGVscy9BLmVjb3JlUEsBAhQAFAAAAAgAw5IoOILEbaB5AQAA KgQAABoAAAAAAAAA
AACAAAAAJQQAAEFUTFRlc3QvbWV0YW1vZGVscy9CLmVjb3JlUEsBAhQAFAAA AAgABVgpON/7/e7M
AAAA+QEAAB8AAAAAAAAAAACAAAAA1gUAAEFUTFRlc3QvbWV0YW1vZGVscy9C U29jaWV0eS54bWlQ
SwECFAAKAAAAAADoWCk4AAAAAAAAAAAAAAAADwAAAAAAAAAAABAAAADfBgAA QVRMVGVzdC9tb2Rl
bHMvUEsBAhQAFAAAAAgAkJMoOKufgXoQAQAArQIAABsAAAAAAAAAAACAAAAA DAcAAEFUTFRlc3Qv
bW9kZWxzL0FTb2NpZXR5LnhtaVBLAQIUAAoAAAAAAO5YKTgAAAAAAAAAAAAA AAAXAAAAAAAAAAAA
EAAAAFUIAABBVExUZXN0L3RyYW5zZm9ybWF0aW9uL1BLAQIUABQAAAAIAARY KTjYZzk9RQgAAEFD
AAAhAAAAAAAAAAAAgAAAAIoIAABBVExUZXN0L3RyYW5zZm9ybWF0aW9uL0Iy YkcyRy5hc21QSwEC
FAAUAAAACAABWCk4aCNCZDUBAAD1AgAAIQAAAAAAAAAAAIAAAAAOEQAAQVRM VGVzdC90cmFuc2Zv
cm1hdGlvbi9CMmJHMkcuYXRsUEsFBgAAAAANAA0AmwMAAIISAAAAAA==

------=_NextPart_000_0073_01C852B0.1B871B20--
Re: [ATL] A problem about resolveTemp [message #71069 is a reply to message #71001] Wed, 09 January 2008 13:36 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mikael.barbero.gmail.com

Dear Michael,

I suppose that, in your target metamodel, a BPerson can have more than
only one boy and one girl, then I changed the multiplicity to 0-* for
the references "boy" and "girl" of BPerson.

You do not need to use the resolveTemp. You just have to do:

to
bperson:mmb!BPerson(
name <-name ,
boy <- aperson.child->select(children | children.sex),
girl <- aperson.child->select(children | not children.sex)
)

By default, it will take the first target pattern element of rule, that
are for your mmb!BBoy and mmn!BGirl

Regards,
Mikael

PS: I suggest you to make the name reference of BPerson a containment,
your target model will be cleaner.

Michael wrote:
> Hi,
>
> I am a novice in ATL an play around ATL with some simple example. But I
> meet a very strange problem when I apply thisModule.resolveTemp() to a
> situation. Now I will detail the problem to you.
>
> I create a source metamodel as Figure 1 shows. The Society contains a
> number of persons; the Child is the sub-class of Person, and has a
> boolean attribute denoting the sex. If it is true, then this child is a
> boy, or she is a girl. A person probably has one or more children. And
> the child has the corresponding parent.
>
> I also create a target metamodel as Figure 2 shows. Now, name is no
> longer an attribute of person. Instead, a person will be associated with
> 'Name' class to represent his name. A person has boys and girls.
> source metamodelTarget metamodel
> Figure 1. The source metamodel. Figure 2. The
> target metamodel.
>
> Now I develop the atl file in order to (1) map APerson to BPerson if
> APerson is no instance of AChild, (2) map AChild to BBoy if his sex is
> true, (3) map AChild to BGirl if her sex is false. We also require the
> reference mapping so that in the resulting model BPerson has boys and
> girls. See the following code. But it doesn't work, despite no syntax
> error. If I remove the red part of the code, namely, disable reference
> mapping, it will work. Even though I change the red lines to the
> alternative codes commented(See code below), it doesn't work either. In
> either case, there is no error dialogue popup. In the console, some
> exceptions are printed out but not readable.
>
> I attach the project here so that you can play it around if you like.
>
> Please help me. Thanks.
>
> Michael.
>
> ------------------------------------------------------------ -----------------------
>
> module B2bG2G; -- Module Template
> create b : mmb from a : mma;
>
> rule B2B {
> from
> child: mma!AChild(
> child.sex
> )
> to
> boy: mmb!BBoy(
> name <- name
>
> ),
> name: mmb!BName(
> value <- child.name
> )
> }
> rule G2G {
> from
> child: mma!AChild(
> not child.sex
> )
> to
> girl: mmb!BGirl (
> name <- name
> ),
> name: mmb!BName(
> value <- child.name
> )
> }
> rule P2P{
> from
> aperson:mma!APerson(
> not aperson.oclIsTypeOf(mma!AChild)
> )
> to
> bperson:mmb!BPerson(
> name <-name ,
> boy <- thisModule.resolveTemp(aperson.child, 'boy'),
> boy <- thisModule.resolveTemp(aperson.child,'girl')
> -- boy<- thisModule.resolveTemp(aperson.child ->select(e|e.sex), 'boy')
> -- girl <-thisModule.resolveTemp(aperson.girl -> select(e|not e.sex),
> 'girl')
>
>
> ),
> name:mmb!BName(
> value <- aperson.name
> )
> }
> ------------------------------------------------------------ ----------------------------------------------------------



--
Mikaël Barbero - PhD Candidate
ATLAS Group (INRIA & LINA) - University of Nantes
2, rue de la Houssinière
44322 Nantes Cedex 3 - France
tel. +33 2 51 12 58 08 /\ cell.+33 6 07 63 19 00
email: Mikael.Barbero@{gmail.com, univ-nantes.fr}
http://www.sciences.univ-nantes.fr/lina/atl/
Re: [ATL] A problem about resolveTemp [message #71129 is a reply to message #71069] Wed, 09 January 2008 15:27 Go to previous message
Mikai Yang is currently offline Mikai YangFriend
Messages: 149
Registered: July 2009
Senior Member
Thank you very much. The problem is gone.
"Mika?l Barbero" <mikael.barbero@gmail.com> wrote in message
news:fm2il9$a1b$1@build.eclipse.org...
> Dear Michael,
>
> I suppose that, in your target metamodel, a BPerson can have more than
> only one boy and one girl, then I changed the multiplicity to 0-* for the
> references "boy" and "girl" of BPerson.
>
> You do not need to use the resolveTemp. You just have to do:
>
> to
> bperson:mmb!BPerson(
> name <-name ,
> boy <- aperson.child->select(children | children.sex),
> girl <- aperson.child->select(children | not children.sex)
> )
>
> By default, it will take the first target pattern element of rule, that
> are for your mmb!BBoy and mmn!BGirl
>
> Regards,
> Mikael
>
> PS: I suggest you to make the name reference of BPerson a containment,
> your target model will be cleaner.
>
> Michael wrote:
>> Hi,
>> I am a novice in ATL an play around ATL with some simple example. But I
>> meet a very strange problem when I apply thisModule.resolveTemp() to a
>> situation. Now I will detail the problem to you.
>> I create a source metamodel as Figure 1 shows. The Society contains a
>> number of persons; the Child is the sub-class of Person, and has a
>> boolean attribute denoting the sex. If it is true, then this child is a
>> boy, or she is a girl. A person probably has one or more children. And
>> the child has the corresponding parent.
>> I also create a target metamodel as Figure 2 shows. Now, name is no
>> longer an attribute of person. Instead, a person will be associated with
>> 'Name' class to represent his name. A person has boys and girls.
>> source metamodelTarget metamodel
>> Figure 1. The source metamodel. Figure 2. The target
>> metamodel.
>> Now I develop the atl file in order to (1) map APerson to BPerson if
>> APerson is no instance of AChild, (2) map AChild to BBoy if his sex is
>> true, (3) map AChild to BGirl if her sex is false. We also require the
>> reference mapping so that in the resulting model BPerson has boys and
>> girls. See the following code. But it doesn't work, despite no syntax
>> error. If I remove the red part of the code, namely, disable reference
>> mapping, it will work. Even though I change the red lines to the
>> alternative codes commented(See code below), it doesn't work either. In
>> either case, there is no error dialogue popup. In the console, some
>> exceptions are printed out but not readable.
>> I attach the project here so that you can play it around if you like.
>> Please help me. Thanks.
>> Michael.
>> ------------------------------------------------------------ -----------------------
>> module B2bG2G; -- Module Template
>> create b : mmb from a : mma;
>> rule B2B {
>> from
>> child: mma!AChild(
>> child.sex
>> )
>> to
>> boy: mmb!BBoy(
>> name <- name
>> ),
>> name: mmb!BName(
>> value <- child.name
>> )
>> }
>> rule G2G {
>> from
>> child: mma!AChild(
>> not child.sex
>> )
>> to
>> girl: mmb!BGirl (
>> name <- name
>> ),
>> name: mmb!BName(
>> value <- child.name
>> )
>> }
>> rule P2P{
>> from
>> aperson:mma!APerson(
>> not aperson.oclIsTypeOf(mma!AChild)
>> )
>> to
>> bperson:mmb!BPerson(
>> name <-name ,
>> boy <- thisModule.resolveTemp(aperson.child, 'boy'), boy <-
>> thisModule.resolveTemp(aperson.child,'girl')
>> -- boy<- thisModule.resolveTemp(aperson.child ->select(e|e.sex), 'boy')
>> -- girl <-thisModule.resolveTemp(aperson.girl -> select(e|not e.sex),
>> 'girl')
>> ),
>> name:mmb!BName(
>> value <- aperson.name
>> ) }
>> ------------------------------------------------------------ ----------------------------------------------------------
>
>
>
> --
> Mika?l Barbero - PhD Candidate
> ATLAS Group (INRIA & LINA) - University of Nantes
> 2, rue de la Houssini
Previous Topic:[ATL] atl launcher via command line
Next Topic:[ATL] Navigation of target model in ATL
Goto Forum:
  


Current Time: Sun Apr 11 23:10:06 GMT 2021

Powered by FUDForum. Page generated in 0.02007 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top