Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » How to use OCL to avoid add two start/end nodes?
How to use OCL to avoid add two start/end nodes? [message #215294] Thu, 15 January 2009 13:37 Go to next message
Eclipse UserFriend
Originally posted by: lifesting.gmail.com

This is a multi-part message in MIME format.
--------------070108060101070104040805
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I create a EClass Flow as container, on which there are a lot of nodes.
Assume that I have three type nodes: Start, Action and End, all they are
inherit from a generic EClass Node.

in Flow, I defined the aggregation as blow:

public interface Flow extends EObject {
...
EList<Node> getElements();
...
}

Every Flow does only contains a Start node and a End node, but can
contains more Action nodes, how to write the OCL constraints for
Start/End in GMF-Mapping file?

According to GMF, Start node in palette cannot be dragged on Diagram if
Flow has already contained one.

Thanks in advance.


--------------070108060101070104040805
Content-Type: image/jpeg;
name="ocl.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ocl.JPG"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CAFaAXsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiii gAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKA
CiiigCvdSyo0CQlFaWTZudSwA2s3QEelZI1bUZGk8m0klRJHj3rCgBKsVOMz A9Qe1al1/wAf
Nj/13P8A6Leucs1LLcn7DqMv+mXPzw3QRD++foPMGPyrGtKUbcpSt1NuxuL2 +tROssUfzOhS
S3O5SrFSDiQjqD3rLj8YaJMkzxeLvDrpCm+VlnQhF3Bct+94G5lGT3IHetDw 0c6MPldcXNwN
rtuYfvn4Jycn8TXK+DoRp8eseIr1tVeN7u5jgtJtLmElsj3cshMSBPMZZBJC zfKeU5OFATSD
bimxPc7KCS5ureK4t76zmglQPHJHCWV1IyCCHwQRzmkuWvre1mn8+2by0L7f IYZwM4+/XHaT
e38Hw38NwW8eq2P2aK3tNSkTTZPtNuEt+THE8bF/3gjQkI4wzEYwWWre3vjl 7+1trpPItbmz
ilvXigDJbSNGHeJThgyg2syFi+R9sTrtXNCPSqKKKACiiigAooooAKKKKACi iigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigA
ooooAp34kMtkImVX884LLuH+rftkfzrMPhoGSR1upE8x2kZY57hF3MSxIUTA DJJPHrWnfyxw
y2UkrqiCc5ZjgD92/enf2lYf8/tt/wB/V/xpNJ7gQWWn3Gn2q21tPAsalm+a J3JLMWJJaQkk
kk8mp/Lv/wDn5tv/AAHb/wCLo/tKw/5/bb/v6v8AjR/aVh/z+23/AH9X/GmA eXf/APPzbf8A
gO3/AMXVbUEvRpt0XuLcr5L5AgIJGD331Z/tKw/5/bb/AL+r/jVbUNQsn026 RLy3ZmhcACUE
k4PvQBp0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBVuv8Aj5sf+u5/ 9FvVqqd+JDLZ
CJlV/POCy7h/q37ZH86d5d//AM/Nt/4Dt/8AF0AWqKq+Xf8A/Pzbf+A7f/F0 eXf/APPzbf8A
gO3/AMXQBaqrqX/IKvP+uD/+gmjy7/8A5+bb/wAB2/8Ai6ragl6NNui9xblf JfIEBBIwe++g
DTooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpenZJaSbXZUmJbYhYg bGHQc9SKX7fD
/cuf/AaT/wCJq1RQBV+3w/3Ln/wGk/8AiaQalblioFxuABI+zyZA/wC+fY1b rkdO1R5PEkkp
DbJ22Yx0HRf6UAdJ9vh/uXP/AIDSf/E1BfXaTWFzFHHcl3iZVH2aQZJBx/DW jRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRVM6paLrKaSzyC8e3a5RTE+1o1YKxD42k gsuVzkbgcYNX
KACiiigArFttMSLxFczjG3asijuC2R/Q/pW1VWP/AJCtx/1wi/8AQpKALVFF FABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABR
RRQAUUUUAFFFFABRRRQBy/izTrzUdT0BLe31WS1W7f7a9hqBtQsJjZfn2yoW +cxtwCQEbHXD
Zdrb+MLs6FcXsd3Ddrb2qzn7RGscMqSH7W0qI22QSx4EeA+084iPNd5RQB53 LpPigeKrq6gt
7v7Y9lqNvDqcl0j2sTSPG9qViLkqFWNUfbFywyd4+ao/7J8SyeDfs841w3se oeZBFFMsbrF5
eCHYX2+SPcWbmcNuK8bFAr0iigCnpImGjWIuLaS2n+zx+ZBJcGdom2jKmQkl yDxu74z3q5RR
QAVVj/5Ctx/1wi/9Ckq1VWP/AJCtx/1wi/8AQpKALVFFFABRRRQAUUUUAFFF FABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAHm
/jv7H/aOt/bfI+3f2JH/AGB5+PM+2ZuM/Zc8+dn7PnZ82fL/ANmvRI54ZnmS KWN3hfZKqsCU
baGw3odrKcHsQe9SUUAcn46n1e68C3Vx4Ulkmupbd3hktWDB4zExyCPmJI5Q x8+Z5f8ADurc
0T+0f7Hg/tb/AJCHzefjbs3bjnZt/wCWf9zPzbdu75s1oUUAFFFFABRUFzO8 PlLHGrvK+wBm
2gfKT1wfSss+ICHdRbF9jshKRzsNykgjIiwcEEVMpRju7DSb2Nuqsf8AyFbj /rhF/wChSVDa
31ze24ngggMZLL80rqcgkEEGMEYIIpVW/W6kn8i2+dFTHntxgsf7n+1+lNNN XQi/RVXzL/8A
59rb/wACG/8AiKZNc3tvBJM9tAUjUu2JznAGf7lMC7RRRQAUUUUAFFFFABRR RQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAU
UUUAFFFFAFW6/wCPmx/67n/0W9c5Z3AVbkfa9RjxeXPyw2hdB++fo3lnP510 N+ZBLZGJVZ/P
OAzbR/q374P8qyV0XUoml8i/nhjkleXy1miIUuxY43QE4yT1NZVYOVrDTLnh tt+jBtztm5uP
mddrH98/UYGD7YFeS+E5YLXxJc6lp2nWOq29haa3Ppf2JYty7bpNtqmwFhhW 3q2Pu3eFGBz6
5p1readZi2SOOX53cyS3HzMzsWJOIwOrHoKteZf/APPtbf8AgQ3/AMRVwVop A9WcbP4omuvD
kouLjRprOW9NjJrEkJbT3hMHmGUoZMFC3+j483G/vn5K53T/ABpPY+FvCWl2 kVpLZ3GjWsbT
SXESCVyPKkRGaRTviK5ZUWQksFIjJBPqnmX/APz7W3/gQ3/xFVtQe9Om3Qe3 twvkvkickgYP
bZVCNOiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKt1/wAfNj/13P8A 6LerVU7+KOaW
yjlRXQznKsMg/u37U7+zbD/nytv+/S/4UAWqKq/2bYf8+Vt/36X/AAo/s2w/ 58rb/v0v+FAF
qqupf8gq8/64P/6CaP7NsP8Anytv+/S/4VW1DT7JNNunSzt1ZYXIIiAIOD7U AadFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUEgDJ4FRzo7wusUhjcj5WABwaqW0FrcqTIp lkRtrrK+/aw9
jx+QoAZd3kcl1Zx20kUswmJ278D7jZyQDjrVjzL/AP59rb/wIb/4iqUrxC6t byRkjhWYxxli
AAux8n8T/IVd/tKw/wCf22/7+r/jQAeZf/8APtbf+BDf/EUeZf8A/Ptbf+BD f/EUf2lYf8/t
t/39X/Gj+0rD/n9tv+/q/wCNAB5l/wD8+1t/4EN/8RVbUHvTpt0Ht7cL5L5I nJIGD22VZ/tK
w/5/bb/v6v8AjVfUNQsn026RLy3ZmhcACQEk4PvQBpUUUUAFFFFABRRRQAUU UUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAF
IzqiF3YKoGSScAUyadIQM5LNwqLyWPtUawPK4kucEg5WMfdX/E+9ADf3l303 RQevRn/wH6/S
lms1dAsTeSQuzKD+H0/w9Ks0UAIqhFCqAFAwAOwpaKKAK927CNYoziWU7FI7 ep/AZ/Sm2I8u
N7YknyG2jJ/h6r+hx+FQG7jju5pp1nURjYp8hyAvUtkDHJ/QCnJcLJqKNEk2 JEKuWhdQMcg5
IA7n86AL9FFFAGbBZrFPJAss0TD54yj8FSfQ5HB46elSyPd2xQB45yxwqldr H8Rx+lTXUbsE
liGZYjlRnG4dx+I/XFRC3nD/AGkODcEYKH7uP7o9Pr/kAFyiooZ1mBABV14Z G6rUtABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFF
FABRRSEgAkkADqTQAtQSTsXMUCh5B94n7qfX/D+XWmb5LviImOHvJ3b/AHfQ e/5etWI40iQJ
GoVR2FADIYBES5YvK33nbqfb2HtUtFFABRRRQAUUUUAVdS/5BtyP70ZX8xir VVdQ5s2H950X
82Aq1QAUUUUAFFFFAEU0AlIcMUlX7rjqPb3HtTYpzv8AKmUJL2x0f3H+FT0y WJJk2OMjr7g+
o9DQA+iqwle2IWdt0fRZf6N6fXp9Ks0AFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUEtxtfyol8yb+7nhfcntQA+WZIV3 OepwABkk+gHe
ohC9wQ9wMIOVhzkf8C9T7dPr1p8VvsbzJG8yYjBYjoPQDsKmoAKKKKACiiig AooooAKKKKAK
t9zFEvrPH+jA/wBKtVVvOZLRfWcforH+lWqACiiigAooooAKKKKAEIBBBGQe oNVtr2nMYLwd
0HLJ9PUe35elWqKAGo6yIHRgynoRTqrvC0bmW3wGPLIfuv8A4H3qSGZZgcZD LwyN1U+9AElF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUy SVIULyNhf51B
5b3XMwKQ9ou7f73+H50AKZXuTttztj7zev8Au+v16fWpookhTagwOpJ5JPqT 3NPAwMDpRQAU
UUUAFFFFABRRRQAUUUUAFFFFAFW55u7Mejs3/jhH9atVVl51K2Hokjf+gj+t WqACiiigAooo
oAKKKKACiiigAqGaASEOrbJV+64/kfUe1TUUAQRTkv5Uy7JfTsw9Qf8AOKnp ksSTJtcZHUHo
QfUHsahEr27BLg5Q8LL/AEb0Pv0PtQBZooooAKKKKACiiigAooooAKKKKACi iigCC5neHylj
jV3lfYAzbQPlJ64PpWWfEBDuoti+x2QlI52G5SQRkRYOCCK0br/j5sf+u5/9 FvXOWdwFW5H2
vUY8Xlz8sNoXQfvn6N5Zz+dZVZyjblKSXU3bW+ub23E8EEBjJZfmldTkEggg xgjBBFTeZf8A
/Ptbf+BDf/EVT8Ntv0YNuds3Nx8zrtY/vn6jAwfbArjfBaaFLqLyaBPpWoXz 6e5i1m2hJkCs
U+W+UMC8zEK+5irOVl+WPad1wbcU2J7nfeZf/wDPtbf+BDf/ABFHmX//AD7W 3/gQ3/xFcLZ+
Kb7TPhbpV49/aXOpwpDa3803P2aXZlkmDyqBKPlVvMlj+Y5+8VjaTwz44vPF uuR2+nX+hrat
p9pqEkIJmni37hLAdrgFlIGXwuzcoKNuyKEdqLi5SeFJoIlWVigKSliDtJ6F R6VLNcCNhGim
SU9EH8z6D3rkdMu77/hL9Z06/wBUt2mbURPY2xQrIlv9lUF1VnOY9x25AA8x ZD/FtXsIYUhU
hcknlmJyWPqTQAyK3O8SzMHl7eifQf161PRRQAUUUUAFFFFABRRRQAUUUUAF FMmmSCIySEhQ
QOASck4HA56moPt8P9y5/wDAaT/4mgC1RVX7fD/cuf8AwGk/+Jo+3w/3Ln/w Gk/+JoAG51WP
/Zgb9WX/AAq1WcLuP7e0pjudnlBQfs0nXJz/AA/Sp/t8P9y5/wDAaT/4mgC1 RVX7fD/cuf8A
wGk/+Jp8V5DNL5a+YHwWAeJkyBjOMgeooAnooooAKKKKACiiigAooooAKQgM pVgCDwQe9LRQ
BVw9p90NJB/d6sn09R7df5VYR1kQOjBlIyCD1p1V3heNzLb4BPLRn7r+/sff 86AKVzq72yCR
oE8t5mhjwzszMu7+FUJ6KTUcOuPNcRQLbBZJSVTzVmjBIBOMtEB0BP4VS1CX ba6Y5aeLOozc
xR73X5Z/4QGz+Rpqzh9Z0lRc30ubl/luLYxr/qZe+xefbNYSqTU7LYpJWN7z L/8A59rb/wAC
G/8AiKPMv/8An2tv/Ahv/iK4H4uQ2Fxb6DFPdaHa3z3c4t5tYjjeJB9lmySH /h3+VzggN5ZI
bAUxw+N7TR72O003U9G/4RuxstMeKB1dJ0t7hxCC0jyfKI1MUhLJkrIoOCQx 3JPQvMv/APn2
tv8AwIb/AOIqW2m+0WsM+3b5iB8Z6ZGa4DT9YhvPi5AbqfTYLz7FqFmlmFC3 SrHPCU8xi2XD
qryoNq4VmI3DLV3Wm/8AIKs/+uCf+gigC1RRRQAUUUUAU78yCWyMSqz+ecBm 2j/Vv3wf5Vkr
oupRNL5F/PDHJK8vlrNEQpdixxugJxknqa2Lr/j5sf8Aruf/AEW9WqTinuBl 6da3mnWYtkjj
l+d3Mktx8zM7FiTiMDqx6CrXmX//AD7W3/gQ3/xFWqKaVtAKvmX/APz7W3/g Q3/xFHmX/wDz
7W3/AIEN/wDEVaooAz5WuWu7ITQxIvnHBSUsc+W/YqK0Kq3X/HzY/wDXc/8A ot6tUAFFFFAB
RRRQAUUUUAFFFFABRRRQBV1D/j2T/rvF/wCjFrBexS61nVXbTLC6K3CrvuD8 w/cxnH3G459e
9bupMEtAxzgTRE4BJ/1i9h1rnLm0dtVvrgaRZ3iXEquj3McquoEaLtx5Ld1J 696xrQ5kkVF2
NTw7EIDqcS28NuFux+6h+4v7mI8cD1z0rJt/GCSfFC78NNcwCMWgEcLyqsiz oFkYhcZZXjnT
Bz1gk4wCa0NCH9nx3nnWot/PuPNSG2glZEHlovUxrzlSenem/wBj6H5/n/Zt Q87+0P7S8zNz
u+0bPL3Zz93Z8uz7m3jGKunHlikJu7KN/wCNpf8AhEta1nTdGvitpp/26zmu EQQ3SMrFJFxJ
naAu5lba4Uj5ckCti71Yw32gwy219btqErLgeSVRxC8nlS/MT0ViDHn5kGWw fmhs9N0axt7q
1htbxrS5Ty5LWZbiWAJgjYkb5REwSNqgDGBjAGI20jR5P7MMi6vI2mStNas8 94zK5zksS2ZO
CV+fPysV6EirETT+KLaHVpdOS0u55UcwK0YQK9wIfP8AIG5gd5i+bcQE7Fwe Kq+H/FFt4lvL
aWG0u7R2sBdpFdBNzQSlfLkGxmGG2OMEhhtOQMjNifTdGub+W+e1vBcSIVZ4 1uEwxTZ5gC4C
y7Pk8wYcL8obHFQaNoOj6Tq9q2mW91EYdPNmvnSzkeSsgZFxITnaXbB6gHAw MCgDpaKKKACi
iigAooooAKKKKACiiigAooooAwZrG6v4IxE3kmC7lljljmAbOZFOQ0bDGGNJ FpGoreW1zPdy
XP2dzIkcs0YXcVZcnbAD0Y961dP/AOPZ/wDrvL/6MarVS4pu47lXzL//AJ9r b/wIb/4ijzL/
AP59rb/wIb/4irVFUIq+Zf8A/Ptbf+BDf/EUab/yCrP/AK4J/wCgirVVdN/5 BVn/ANcE/wDQ
RQBaooooAKKKKAKd/FHNLZRyoroZzlWGQf3b9qd/Zth/z5W3/fpf8KbfmQS2 RiVWfzzgM20f
6t++D/KneZf/APPtbf8AgQ3/AMRQAf2bYf8APlbf9+l/wo/s2w/58rb/AL9L /hR5l/8A8+1t
/wCBDf8AxFHmX/8Az7W3/gQ3/wARQAf2bYf8+Vt/36X/AAo/s2w/58rb/v0v +FHmX/8Az7W3
/gQ3/wARR5l//wA+1t/4EN/8RQBDLaW1vd2Tw28UbGYglEAOPLf0rQrPla5a 7shNDEi+ccFJ
Sxz5b9iorQoAKKKKACiiigAooooAKKKKACiiigCrqH/Hsn/XeL/0YtWqqakC 1oAGKkzRAMMZ
H7xeeaX7LN/0ELn/AL5j/wDiKALVFVfss3/QQuf++Y//AIij7LN/0ELn/vmP /wCIoAtUVV+y
zf8AQQuf++Y//iKPss3/AEELn/vmP/4igC1VWT/kK2//AFwl/wDQo6Pss3/Q Quf++Y//AIio
lieLVYd9xJNmCTG8KMfMnoBQBfooooAKKKKACiiigAooooAKKKKACiiigDOt LG0mikkltYHc
zy5ZowSf3jd6n/s2w/58rb/v0v8AhUFo92IpBFBAyefLgtMVP+sbttP86n8y /wD+fa2/8CG/
+IoAP7NsP+fK2/79L/hR/Zth/wA+Vt/36X/CjzL/AP59rb/wIb/4ijzL/wD5 9rb/AMCG/wDi
KAD+zbD/AJ8rb/v0v+FGm/8AIKs/+uCf+gijzL//AJ9rb/wIb/4ijTf+QVZ/ 9cE/9BFAFqii
igAooooAp30kcMtnJK6ognOWY4A/dv3p39pWH/P7bf8Af1f8atUUAVf7SsP+ f22/7+r/AI0f
2lYf8/tt/wB/V/xq1RQBV/tKw/5/bb/v6v8AjR/aVh/z+23/AH9X/GrVFAGf Ld21xd2Sw3EU
jCYkhHBOPLf0rQoooAKKKKACiiigAooooAKKKKACiiigCpqTBLQMc4E0ROAS f9YvYdaX7fD/
AHLn/wABpP8A4mjUP+PZP+u8X/oxatUAVft8P9y5/wDAaT/4mj7fD/cuf/Aa T/4mrVFAFX7f
D/cuf/AaT/4mj7fD/cuf/AaT/wCJq1RQBV+3w/3Ln/wGk/8AiaiW4SfVYdiy DEEmd8TJ/Enq
Bmr9VZP+Qrb/APXCX/0KOgC1RRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGdaX1 pDFJHLdQI4nl
yrSAEfvG7VP/AGlYf8/tt/39X/GrVFAFX+0rD/n9tv8Av6v+NH9pWH/P7bf9 /V/xq1RQBV/t
Kw/5/bb/AL+r/jRpv/ILs/8Argn/AKCKtUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQBHNClxEY5ASpIPDEHIORyOeoqH7BD/AH7n/wAC ZP8A4qrVFAFX
7BD/AH7n/wACZP8A4qj7BD/fuf8AwJk/+Kq1RQBV+wQ/37n/AMCZP/iqPsEP 9+5/8CZP/iqt
UUAVfsEP9+5/8CZP/iqfFZwwy+avmF9pUF5WfAOM9SfQVPRQAUUUUAFFFFAB RRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFF
FFAH/9k=
--------------070108060101070104040805--
Re: How to use OCL to avoid add two start/end nodes? [message #215303 is a reply to message #215294] Thu, 15 January 2009 13:44 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cdamus.zeligsoft.com

Hi, David,

If your flow must have exactly one of each of Start and End nodes, then
this constraint defined in the context of the Flow EClass will do nicely:

nodes->one(oclIsKindOf(Start)) and nodes->one(oclIsKindOf(End))

(I'm confused by your diagram showing an EReference named "nodes" and
your code snippet having a Java method "getElements()")

If Start and End nodes are not actually required, then:

nodes->select(oclIsKindOf(Start))->size() <= 1 and
nodes->select(oclIsKindOf(End))->size() <= 1

HTH,

Christian


David BY Chan wrote:
> I create a EClass Flow as container, on which there are a lot of nodes.
> Assume that I have three type nodes: Start, Action and End, all they are
> inherit from a generic EClass Node.
>
> in Flow, I defined the aggregation as blow:
>
> public interface Flow extends EObject {
> ...
> EList<Node> getElements();
> ...
> }
>
> Every Flow does only contains a Start node and a End node, but can
> contains more Action nodes, how to write the OCL constraints for
> Start/End in GMF-Mapping file?
>
> According to GMF, Start node in palette cannot be dragged on Diagram if
> Flow has already contained one.
>
> Thanks in advance.
>
>
> ------------------------------------------------------------ ------------
>
Re: How to use OCL to avoid add two start/end nodes? [message #215452 is a reply to message #215303] Fri, 16 January 2009 05:56 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: lifesting.gmail.com

This is a multi-part message in MIME format.
--------------060300010702060809070109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Thank you, Christian. The OCL expression you provided help me a lot, but
the interest problem is that I cannot add the constraint expression on
Flow, because Container is invisible in GMF-Mapping file, only child
nodes such as Start/Action/End, in other words, only Node Mapping/Link
Mapping can add constraints. Look attached image, you should understand.






Christian W. Damus wrote:
> Hi, David,
>
> If your flow must have exactly one of each of Start and End nodes, then
> this constraint defined in the context of the Flow EClass will do nicely:
>
> nodes->one(oclIsKindOf(Start)) and nodes->one(oclIsKindOf(End))
>
> (I'm confused by your diagram showing an EReference named "nodes" and
> your code snippet having a Java method "getElements()")
>
> If Start and End nodes are not actually required, then:
>
> nodes->select(oclIsKindOf(Start))->size() <= 1 and
> nodes->select(oclIsKindOf(End))->size() <= 1
>
> HTH,
>
> Christian
>
>
> David BY Chan wrote:
>> I create a EClass Flow as container, on which there are a lot of
>> nodes. Assume that I have three type nodes: Start, Action and End, all
>> they are inherit from a generic EClass Node.
>>
>> in Flow, I defined the aggregation as blow:
>>
>> public interface Flow extends EObject {
>> ...
>> EList<Node> getElements();
>> ...
>> }
>>
>> Every Flow does only contains a Start node and a End node, but can
>> contains more Action nodes, how to write the OCL constraints for
>> Start/End in GMF-Mapping file?
>>
>> According to GMF, Start node in palette cannot be dragged on Diagram
>> if Flow has already contained one.
>>
>> Thanks in advance.
>>
>>
>> ------------------------------------------------------------ ------------
>>


--------------060300010702060809070109
Content-Type: image/gif;
name="no_place.GIF"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="no_place.GIF"

R0lGODlhjQJ/AfcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/ AP//AAAA//8A
/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAz AAAzMwAzZgAz
mQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDM AADMMwDMZgDM
mQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMz ADMzMzMzZjMz
mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM ADPMMzPMZjPM
mTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2Yz AGYzM2YzZmYz
mWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bM AGbMM2bMZmbM
mWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kz AJkzM5kzZpkz
mZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nM AJnMM5nMZpnM
mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz AMwzM8wzZswz
mcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zM AMzMM8zMZszM
mczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8z AP8zM/8zZv8z
mf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M AP/MM//MZv/M
mf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAjQJ/AQAI/wBjCRwYaxXB gQYPFlS4UGHC
gw8JRkTIcKJAiw0hVtzokKPGjiA/ipTokWRIkyMpnlSZ8mJJlihjwpzpcmXN lhll3tSZk2bP
nT4xCn0JtOjPo0NtIiW6VGlSnE95Rg3KdKqqVYZgGYqlCpYqrtRghaVGtqw/ amfTol2rti3b
t27jwp0rty7du3bz4t2rty/fv34DAx4suDDhw4YTI16suDHjx44jQ54suTJl uF+3ft1cDVbn
z9SqUXswejQ+0g9Om0atOjXr16tju5bdujbs2bht076tOzfv37uD+xbeuzjw 4ciNEz+uPDnz
58ujO5fevDr06ditU7+uPTv379vDe/8X3708+PGpuarKakhV1/fUVI0VW5as 5fuX8evPz3+/
//4A/idggAQOaGCBCB54X2ZcxbLMgxB6Fho121BYGmr+YKjhaBlyuOEDHYL4 YYgkjmiihyiK
mGKJK56o4osswuhijDTOaGOLOMqYY4073qjjjzwC6WOQRA5pZI9ICplkkUse qeSTTELpZJRU
TmllkzhyhZV7y1TzwJfMLCMWffUpmOCZZqaJ5ppqtsnmm27GCeeccsbF4Fen fPnlPWFKKBpq
pp2Vm6C1EcqaoYHShmhqi+LT6KOKRjqopIVSeqiliU6qaaWbXtppppyG6qmo oI5qaqmoMoqp
qp+ySqqrp8L/mqqjq9Laqq2v4hqrrrNCequvuQK7q7C91kqsrMjymuyxyuKq HnvLVKjKA9JM
0+dY9dGpbZ3bdsvtt96GC+644pbr32YN5qmnnhNWCChqAMQLQJVYSkmNvADY qy+9+17Zb738
BuyvwAAPbHDBCP+rMMELH9xwwgxH7DCPWkIb1nvLFCNmtnDNe2+5AKwVslwj m2syuSifrHLK
LK/ssoF3xhLKA9t8uYyey0z4rmoAnJaveeQdl+9yP58HNHpHJ2300kE3jTTT TzuttNRQTx31
1VZnXfXWVHeN9LNanSIaLMvc04800oQJSsZloiWvWvGmha/IHscd773z3n2W vHTX/6V3327H
/fLgLRdO+OGGJ474tjHP7OUy/kQuueTFvOtPyPOSlnm+l6O4OYghPzB0vBiG PnqGnI8Yeuei
wzvx6xDD/vDsEsduO+2y14777br3nvvvvAOvYsXunRJWNWX74+g9/jB/T85t 1R3434Jfvrfb
11vPlsdy823XyHNnv7ji5I9vfvnon69+Wo0/4GUxzcffT/yVJ9pz6/iEXujP pu/tc2r60xyu
9Lcoj7XuXrr6GbMWaKwG/sqBwYLgsCRYrAdaMIIXnGAGK4jBDmrQgxz8oAhD SMJlUdCEG0Qh
CFU4KrAZIhR9OAXZzHaPGvajhs8zC94wVze9hQ9vcMPX3//2Rr0h0q16O9xe ydLHxPU5sYlQ
fKIU9YOuKlajGDfMIg37UT/h+S54YNydGL84Ri+aMYxkTOMZy4jGNaqxjViq mFa44pVl2OMe
d8wjHqE3xT5G8Y9+DCQgBynImHGGbBoLxTIUqcgLac1rj8Qa1yQJyUlG8pKW zGQlN0nJTmKS
k5/0pCZFCUoXuscrXonPfDhGyFYK8pWujCUsZ9kmQ3LlM36ykLsu9EY2+rKX wHSjMOH4y2EW
k5jBRKYxk3nM4V2lPZtBpXzGxEpaWlOW2LymNrPJTbzYUhXVAKdncrkzBqaw WeZcITpPuM5z
pnOELCxhO9X5TnnWM574nCc89Wn/T3bek5/5/KdA/UlQd1KKK91M6DYXqtCG MpShX0nFNCRK
0YlatKIYvahGM8rRjXq0oyD9qEhDStKRmrSkKD2pSlPK0pW6tKUwfalMY0rT mdq0pji9qU5z
ytOd+rSnQP2pUFPBlXUZ9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK 1a569atgDatY
x0pWrn4Fq0JMK+nKyta2uvWtcI2rXOdK17ra9a54pWpRrxqy0WjOClXgghWs ELq8GvawiE2s
YhfL2MY69rFJPStf13UvLgCCC4ItLGRbd9h8bfaziPWsWEUL2tKa9rRP3atR 3VMIQxRCFa2d
1lFJSxYA/1hBsIT161LlNVXebpW0eAUuV9eKVuGONa1ZJa5xq0rc3Uq1uXry 7bo8C93fVhe1
2M2uVyW7WqTK1qihqw8AMJtZ3TJ1udEF71fRO1f2ovW3bgWue5+K3vk6t6n2 VW9ShSva/EbV
v9oNsIBT+911/YFdejrwbGuLOcByAQq5pe959WtV/oZ2tPBtq3y1Wt/J4re3 SrXwlwAs4QGb
+MRU5e66Cvyl+CBVXlbYg7z2QNi7zVa6nI1uf5Ur3bWS7sc4nq2ORbdjHfN4 xPkCMpGNPOT0
ThfI12UykqkbZSXj68k7Xu6VrRxkLPcXvNRtXZGl3Fwc+zjJWuaxco1M2jIf 2f/JcCZyluur
VjbLuc1UjjKK9/xZ1a6rEHcOGaBT8QBCExoAV7jtYNFcW/M6+cuPjnOOOUvl 9CY5xE+e7og3
rWlKc7rMn+b0pMPs6ReHutRa9vSlUS1qCp+a1KbudKgvTepaS7rNn2avrSlM 61f7utWjPjWm
xUxsUfea1ZPms7I3q2I9qSJDIXLxbC3LhSuEtzSa7TSkpZxsXJd606sWsqyn PGZkwxrYV+62
flM97m+Lm9i7nu+akR3rONdazbtWd6STLe5y43rV8Sa3vdfd5P2GOdxfRriP gb3shjPWz3oq
BD7IMg1qVBzQ074tFLL9sVhv+9sb3ve/+Y1uV2v71yH/v7XJz93ukKf64OYu ccD362pbfxzk
NRc2zfU98pmzPNgnb/fAEW7pmJPc4Ug3bLO/JB9qNMPiTmfxiMkLCMJSNttk Tvedm6z1Myc8
x96eMpjzXO5AQ7fHCx+7nJfMXzWLvdVWLvbW195ttEP51rwVYsHDTfetB/nN Zla7wIOtcC+L
Xe91nzO6817sLct9y3pOuuTrCnGmw9a1l5e66KwAYQj3tSxYZ3hdSVxW0gfY 9NhFPVRVD2fW
S3rysL/r0p+rViE6uu+xz71Tu6z7zkZ+9b/vvfDBWnmjEpqpHEv+8JfP/OY7 //lknT30p0/9
6lv/+l4tPva3z/3ue9/60tfT/zSmevzvm//86E8/YrWv/va7//3wR2z4vzR+ qZY//vjPv/73
/yX2vxUG/BeAAjiAujd/D1B/TeUVr7WAXeFU1LAFtwdmS8ZcBFiBFniBZeV/ UWUISMWBTbUF
frAF54VmGFiCJniCcWWACMhUGGdULahUhuAHMeiBBjeBKHiDOJiDWaWBUOWB ukUNNIhUqQCC
hpAKMbgF95dpgOdbXad4dqaDUBiF7aeCTwVoejdohZaFX6IFRFgWRyiCQgZw KGdsQfdzUniG
aGh9PPhU8gEoZKF5ejKEMmiEIZiERZdlYwh3xuZ6adiHfshnVOhUgEYNE3cW 1PCCSTWDMuhc
Ymh0H/+Xb38YiZLYe2voVIZQcRgVhEoFgmCIaQp3d29Hd3mHZsE3iaZ4itoV iAkIW6z4WrDg
gBCYXCb3YaKHirZ4i6ZViWQFgMWFh/9VirgYjMJ4WKo4jMZ4jFGoi8i4jMxY gsXYjNAYjfun
gXYIVtUojdiYjSZmgNrYjd5oftTIVtf4jeRYjovFjeZYb83HhxSYjvEXjmHl Hn/gWvQIh1/C
AuRWZVr3i7gngfjFe1g2ei8GjGC1j7tVaeq4cwYZYgj5bjvnju6HjvHoXUvF Avg4i+B2dLTo
XvllhrX4VrrmVQDmkf22eu9GkgRXYkIHkeBoj18yjlnVgqKFiEZlkRf5eiv/ CXwa+ZEpmZBx
xZEiOWH7tpEmyWs8GXS755Ms6X0SCVbf5VnSllQ2eZM7KV9kx5Bgh2dlJ3hI 9oQTqGRdOXeh
qGdt13JXyXV255U96WaR1oQBOXBZmWmzhnZviZFLuX3wCFZWODdYaGjrMpU3 GZIiV4sk6IiE
CXZkKHLe5nM6l3OI2ZaN92tAN2yMaXT6BpeVOXOXmZN3iX1N+VWyxTpRiVRT yZlAB4malnbx
BpD3Nm+DZ5WquXiR54SjxngAx4SJWXAl+XaZqXK+6Yu9WXJ22ZnYl5dfVQiG GDIXV5EWOZyn
2ZiDaZkKyXBhJ5zRiZMe55A9J5w3d5iGaZkpx3N5/6iZ4bmTxAl+sUBXTfd0 7OmSzTmcZuaL
N1Z4T8h7o8ibafl3d+d13EaZUOZ2x7Z29xmWXaeW6caWAkqK/qiVDBqWBMpl VnmU51l9xrld
qjCPrRVbFZmPqseO3uihE2qCn4liABmiJiqMFRpWMHmiLNqiRzWiLhqjMvpW KTqjNgpXCZAA
D5CjOtpUPNqjbAWkU5WjOyqkUPWjRrpVRFqkcPWMYbWCNxqlX9KjSYpUQFql T4WlVqWlRLqk
VGWkWvqlUxpXyiilZlpWXepUYXqkXsWlOuqlQ2pUaypVVJqC6blUUPqkZ2qm aTqlWFqlS/qj
eiKoRUqlb3qliDqoPKqof/96qIrqp4HqqGPKqOsSqXDKVITKpDu6qXM6VWXq jiAaXO2Ii5Ja
p0eVpKaaqqdaqUJqqps6qJP6qlbKqZOqqq96pXJaqWP6prKKqbW6q7S6XXeq VHnKVYe4Hqxo
CBGoJxeJXANZogfZj3I5gr8HraX3rHSFeDX4aAs5raF6gaUaq7qaq7caq3Da qqfqpegqq1wa
rIRqq7g6rpDKq7yqpr96q5e6VZ/KVTT5AP3KrFR5mHz3X0fZkR/5rVQlmMNF sOYZdig5magI
r7N6r7YKq+IKpuY6rvE6q/WKseXKruR6scHqoxQLrKA5rElVrFv1lM7GnAGr sAk7sA55Xx0m
kPf/tbA3K3fDRoby5pxpuKiJmlSL+qiFyqSZarSXKqhDC7RBm6v1WrRMO69I yqqUSq/imq5+
mrUmm30uSVaDeED48K/3aJOmGaFieWNxyW1kiaBieWY26HVaqZuzCGpyuY9w q7asebdq+5Z2
W10Iu6eI1alz5aRmFWguNn6I+5elyZOLCZ3gFpwvN5SNa4PfiZrjBmuNe2zk aZqPJ5kjl4fY
CbgDJrhzta9b9bVDE7YuS5Uwq5nqFZuoxpq55ppzB5uue7Yn2WOGp7m4+Zhy 23Kgy50697ei
y5Qoi1Qqq1XyMXF9NQ3u+Z6h+5zuVobBm538Vp2bSW8SCp3VqblrqZSV/yu8 4Fm8OWi6WlUI
1JBRYvsA0Bu68dmfAVl2B3pdA8qE+Xl2+5ln8Otx/4mHATqKhfmVupuPCSpw DKqgd0u8p3iu
pIum6MlUyZtVx9oer6WsG2p2FfaNCmyKDaxUHgtWHUyyume+p0eQ5IuDITyx FgvCbdp7hPtV
EXzCxDm0Wiu0raqu+UqpWpup7xqpmvrDOBzES2WpKZxYJCzDSGyvFvunJfux q/qxEhuyP+zE
67qxE1ux2PXCSbzFvrrEHhyoTfzEXkzF63q1RSuyIOvBYYxdNfpVK8rFEFnF QtvErirFUHy1
VuyxeZyxanzHqXi8cBzIW9q0Vrq0hpzDZ6ypUf97tF2atExrqJI6xXIKyZKc i137xlqFyYK8
yWgIo+m4waeXV6DMyWTVxsqLeRnqHhfsrPNpwkNWoqXYrXUpV8Zlrcdly5xL emepkg/Jy6QM
Wp68shSpVO0rsOZJmUJJlL3cXjnLYQw7yjf7sGQFzblXxDpoyjEpIkPjry7r nKz3Y8kslDWb
reHszDkrzcc1lMzcfFNLw2xaqGUMwoi8fcGsvE42mke1uIy7oLBMn2NJZ3jm lW67hG62lUJH
t2iJoE1Im2sZt5Q7v/yM0CDn0AXdkA9Kv87nqiEcr9YcVVbsfdiMVXv5Nn2p hWNLtvscnS8H
uTQHaY+Ya9T7neqIuSf/5730hr27ubmvN7k0rdLChtM8bZ3M97S9mqVjTFYf 3X31nFWy1XH4
XJMondLVa2mZKbuUNsCvOXa3K8t7SLuOd5uwW3fIXLszK9GVqZhpZ5aXK5nH DHvuDKZ1+rRy
LMkMrLRBe7RFDdKXLFbI2WjLSczF3LpsHdO3m9PauXIpWZ5jvdZ3KL4kx24s J2JG6dPimb2P
jZk/PX1ELcdWi8Z77MfnCqxyrX5LjVVNV3FP57zMObOz7HbYKr/2W8tgGdv+ i78IrL+h6J+k
CKCPl78JvW19C5z4ltv8Cc4G6tp2h9sXzXbUh6oaC6krfK9FTcPqmq5Wm9R6 zVSanGKojHnu
/8mhGbyn1Px+zj3Go/3cno3H5Hrd8Ffa2YXLvxyA1M3DuJrH833DjZzfkwy0 aYx+Ib1V2x3f
J9rRfOyMgCzgCG5Y7oyB/53gDg6NWtxVMfzgFD6AR1zhGD6MEc5VE57hHg5/ F96N4y2qBfnh
Lnzg69LhVVUNDLiAXkLM4P2srtyV/bx71grfYSXbI97KXcXQ71W8BE6JXTtW /bq+xXx0Afpc
BStzO0vOTW7OSZmbvoxz23vQQJ5+G35VLMt03Vy2fCWzPqvOYT7N5SyL0Qy+ Tz69VY6TO86M
QT7CQ87X2kwa/mDkUV2VEU1nafvPDBnQgyfAb7vLfUeWaIt3fy7Arv+Nu7r5 vmyn3LXZ2pXG
n6x9o2+ee1luVdNie9OSuCsImNEb1Ej+lePZ0pJbhqB+1oftu6oWmTfNuXqo mIjtmK+m2G3d
opUeeyFeVahLGoe4ul5O2WFY1VU2u4/Yu/XZmFydlV5tm1cd1mZ75nyb6icp eJIdvTN667B3
6VXVhh8zcc/7suc82JRtuYkt7UKtvbX+c93L6qU+6cAd04ydm6AOvFfu33Ee Vuj7dBTV64A9
6cQtn2oH25Ie8Li90P0IwIi+v/3Wv0z2v7590cCtn2zWZWmNu/hG8egso9g+ edpOVSzeirD1
4lIZ4wl7nm1+phs/ebl+Wjhu4kuZ8pLX8Vf/peIuX+Ewn3QrX/M631U3j3Qy v/NAj1U973AN
nlUBHvTxPfQN595I3/Rbqn5Fj1VH7/SbrPTLxvTaePKfpfX+voxWr2xRP1Xr kcrz+N0YLOOm
B4oDaePVOuM9jq3Zap9r66Bh7uO5zc/L3PXH+PWAiOJspXnP6+9J/sxlPp15 /5PNbOZRrpGC
6V8i1p2fvubV7ubtF/ZSJZMR1+WRX2Fg7uqOu+Y5XvgetrP21fhFiZSJj/qF z/X8x/d9r573
/O2s28x6u/YC/7v9OdwPGuiHTpd5L9GI7ucGf+hsjr29u9uLjtCybZY25/t3 D/qT6Pp7ZvlR
NdJ3U9L35+lSLZ2p/8nSpubSmP3Qo67m4f+cNp1vOG3lqh6c2dudPT3+N1fL 0Sj9KIb1KZYh
olMasv/rU/2442nVAAHgwQMABQUOPIjQIMKBDQ0ehMiwIcGFEy0mfOhwYkaB HRUWlIjxYsKL
Fj9qRIkyIsGUEl2yNFkR5kuYK0VujGlS506ePX3+BBpU6FCiRYcmMJpU6VKm P2Op8pmqKc9C
+KhRA0BtGrVCPVl8LcmTpE2aKkOenbmTbFiaJNPWbBt0Jc6WHueifVt25tq0 btferEsX7l7B
aOf6ZTtV8WLGjR1bRPpY8uSkqmJR9qnqajOt1JpB5Qk28cixGEHqXGh6Y0WZ qztCPJ3xZP9r
iq9fn8TdE7bt07VZepwNsndsmaWNPxyePLjv1W1710ZuWrVv4c8p6sWcXft2 pZG5f8/+NOpk
VYYKmVf1xxDonSw+0h7qFvx8+vUny7efX/9+7d75/xfKMgDng29AAw9EMEEF F8zPPwYPFK8n
qbKb8EELL8QwQw03/M5BDu0T8EMRRySxRBNPpMxDFLWLkKcKV4QxRhlnpLHB GrMLkadptNvx
Rh9/BDLIBFUUkqkWi0QySSWXPJFIJofKcaceMZsyPuuexDJLLUV0csuejtSw wB/xS+pKLxck
88wBzTyoS6DS/DFKnapsjCtVCrmzPGqEEpO5lkbS7bYyp7JttOb/cvITu+sA RG4xOPMSq1C1
HhWMtjTNtK9RxR6l1CFJUbsUUQASQGxSRJME87uuTFr1J/d+6rSwmAStDzC5 UPsT1jV/u2+p
u3DlM1efKI01WLV4laxYYDkV61Q3T5U1SDlNopMx9ia6NrRb4wt0UfrGIgo/ W9/cr9RelRJu
2HAVPVZdxsxll1BfgWu2XcGeNTTeGVPlrqs9/8WnVVCL9Us6keCrztP3FlbI 0+dkG61ghw+O
Tdbkhkt0YoWvS/jije1NuGHoNPbWT4+JU3i63IhD+K2LKRb3Ydi8lc3jejme DuKajfs4tZkb
VtlkeEly8GWNLEVyWouqXQwq5KiBakep/10ztjCyyLTLMK1f+uvmvMCFy1z5 wI4oVLr+Ihsv
aB/eeuyIz9a64sH4atdts5C1d+60B4PU6r3pjsvqthftmm9zSV37LLuL5Hc7 fx/4l6tACU68
Jkyzxq3wvlzCNKXF9Ra78t26Hdxl0swuizXOwf4TXIMZkhvtzglLzKbZC/6V 5uLcTT32j00X
/PXfCt/NVqI/tx1eIZWeiGnFNPOHmui1yra9bfmeWy/Miecc7r5Fvbv07tXW vG7xA9fN4q09
f/tQ4Ln/PjDy1xcd/dR5f19t2lsHNHD4kZ8I4uaXPX3RqHHaKQQ1UjGNBS5Q YJObnM9G16gr
YW5kxbGZz0Y2rP/oMEeCIbMcR1gGndvgLmjRwZ3D6jJC14hwg5YaXeuqQy+Z sXBtFBwhDiH1
stboTGYrjOHENLgziSUqhan5HRHlNxBSiXCCLlRWjJjXEOdNxU54wpMh9vSm 2X0rX+kr4Kai
qKYtjUtLGAsgGYdyQAb16Vs241MX1ThH8Lhxjvii4xQHUkXG8JGOfwRkIMGD xzmyUZCHRGQi
UURINerxAX5UZCQlOUkbUdKQL5oMJoHSDEp20pN37KQjPzlKUpbSMYwk4yW1 o8mfsPJ0PzRl
LGW5IFSSUZQrEs0sdblLANVSTaqkUFEgOZBc5nJgcnxMn27XORAWZYyzGhsy eTlNnfj/8ky3
FNFXRGPMZVVNXmAE56xKVkf8UdOcP7Gml4CJGVdKyFWvAos2X4UrZT3Ta8AK J6CkmcxyntOf
1fQkNjm0TffEc56kcZ/uZtaxoBkKjiW7FK1YVrye9bBAPvSbcv45zXRuaZ2U aSdPOCmVHUll
pMSUZ0FVeqyb8OVve4MWAV3aLOD8T36AE9z+8rfRXXZUSwLdEEEfYNC8bdBk 3jNhUT0Ykt2x
dC++M5z3xhkxNFZ0nzyNpE+z9NFMFiWkKAWrPO9ZKuPpj1mwO5+itle6smIv b4fpJlZ5qVUs
AdVHMBSeQiGWmxZO1IgzZBPenKjCzDH0chhEIcMyJldS0vVJ/1yVzFfnBCsU 7tVLytNVGBm7
2TQG9DKcZdRDuWhP0PLUsY+tnkUkO5XVqra0r4WtUU7LJLvG1ra3vdBslwTZ x7R2IpzEbXCF
q1slOXKYTTnuRHwrXOb6k7ioSm1zpTvdXn7SuDzyKnW1K9fnIsmQK5rCdsVL ye4W6brZOS4s
8oRFVcACKNTwwxYjhdnfHZM7pB1vfk1SXiF9d0CG0AmAfzIFP4S3nwdm36De pV8G94S/y/us
jrALFAHPpMIuiq8fvhpFOOFXWL5qcIj3O0r/AkgzD/BHViAX3YGkgsCpgHGB 21lEo35KWH5l
GGskqjIf5lXE232wtCIspQn/pCvI8f9HV6Sy5IYQWMNXUaAfCqzUv/XNbuXj Gky1HK0fazfI
QCrxf7QIuaxE78ImcbGGYzyFGddvsfcjIESj1VS80LjLXh7leakUFH+l2CqS i4qGNcy7u2B5
fFhua/i2HNM7N/fLPwozf1QxjWk0g4GVZvFECGzg+UowOBqE5qGGaNGMDZY6 ObNjo2P7aB/p
mTLpXW+e3PsT+MpX1bcOEqtvFGkScRrXv/aRrmvk6skkF9jHpqOwDZhpZDfb 0aQktmSM7Wxq
Y0nZyx5PMN+1DABw29vdBve3xR1uco/b3OVG97nVnW52V7vR155RbS3EDC7U Wwz15sK97Y1v
feeb3//ed8D//S3wfhcc4ANHuMEJ/u9luPvO8JYRbx0j2ZRWPCZc2AK+M17v jWNc4x/nOMg9
HnKSj9zkHUe5yFNe8pVzwcMOhy3EpTjkBR3UIjZ/wDLwvXOe99znPwd60IU+ dKJzgRkw/7HM
YSTxxlD8AX54etShjnMAYHwiXLiBx7Ne76xnfOtY1zq+uw52rnt8IFw4u9fF Hvayq/0BYFd7
28kO9pcjHbRKX5G86YPzhuAcHmj399sVnvCDD37wZz/7whVP+MUbvOF2bzDe UcR0xjgd6peP
OtUBz3KVd57znB/IFtLu+ZOTvuUdrzvkGSv5E+l9Pnwnpkl0/vaeJ34i924I 2h+A/3va6z7x
/0a84HVf76v7fvfE733xkf97o6uewaw3EeUXw2TqP2BC7sE85jX/9q+LnvjE zzj3aT/+rL/d
+3Pv+NvVT/zyW/37aIdxKpoR//nDuP7yp3/+7a9//O/f//0HwPsTQP4bwP8r wAAkwAQ0QAVE
wAV0wAaEwAOUQAacwAeswAikwAy0QA3EwA30wA4EwQsUQf5LAA4cwQ88wf67 ENcDD9gbKpOg
N+Hbt9xDO9zLN/Xrt9zjvcMDvOQ7OzEYP+KbNuf7jiFUJOhzJwuRPu7APqnL vItLPvADvPPz
QY4LwpAzv49bP/O7wgcIP6tbLiL8jjDMKgsxQvpgwe9wQf+c0znf2zmdGL7N w7erU7437ME5
zD0aRLseKbo+9MM/BMRAFMRBJMRCNMRDJLozRCQkdJELWcLtqLiUuri4g7u5 G7uvu8S1o8RM
lDtM9EKys76zw0S2q8RR3ERS5MRS1ERLRMVWPMVXZEVYNMVYpMVZtMVVvMVO xMVd1MVeVEVf
TMVg5AIyPEILIUY0pLkT+bvGK7xmZMZndEPe40PDc0bGs0ZqhEZsvMZq1MZu 5MZvzEZw3MZw
JMdxNEeDU8RDYsSdOMb5eMQDqbrTM715/LzSq8eMmxB6tMd9lMd71Md+5Md/ FEh/JMiALEiA
RMiBNMiFbDlXEj3Z+zXOgBwGScP/BNG5fts5jDy4jPQ5jRQ4juw5jeTDkOzI kiTJk+Q5j0Q4
kExJk2xJlGTJmNzImfxImlxJm1TJnHRJmazJnrxJnwTCnmMaQ9iCWWuIhns8 VUuFq3iQdzQQ
dlu3qITKqZTKZcjH7lu7ksPKstNK3XvIB9hK9MvKq2u/8ANLPOS+OcxKkwvL thQ5t+zKuGTL
t6RLuew4uJxLu1zLu6zLkfs9fNQJKuACGJiIZTCFBwCFpLwzGGPKBYk2U5pG cfTGgDs+GTxH
wLNBhTu+GbzMcpzMzgTNzxRNySTNZ6TBe6OTWNgCQ2DNLbiMZfCH2EQxxdSU cLGx/uGgLko1
IIm/pmS2/6AIhWU4hWUIzuEUpHw8SIV8SDlMyPfjR9pLP+WUzuSkToacTuus zua0Oj18kS0Q
zPUwhMEUvVMAhX4AhVMoCXpZl/hhz/BhtCeZhiejyGRcGqA4Ootghvv8o5FE xJ9DPDz8vvXz
OeYjUAJ9Qx8sUObrzwVl0AYdRD3kAjqBBSpgTUPQggg7BXtAT3wyinTJp3pB HS2Jv8ZMEF7b
iVCYyG2AHGlgBsW8kNQTiqvkxV+kUU4ES1EMwi2s0U9sv647y7RMy+/zuiAU vR51xVqcUWGU
xSQ90lys0SZl0iVtu9/LOlaCgS0gzIYwBsQcK4oylRPSqIFxH4zCmY3ZKwzK kP9UiC9bQxCl
qYb1yKI7qQaeuIcHwIPmuYf8HC1nuioEe7UfLM3O3L0fLL7TbEbhk8HKDDyE 672glMPEG03P
DNRIDc1JtVTKREediIULbQhqMAY2rR36wQmoMjS0qjOkqjKZ0qz96E0G4ZcH GghYHQhS6ARS
wANaJQUVnVMUvZ6igtEPA6m/vM7T60KUU7+Wi0LnpEK1xEK//MLz085oHdZp zU5qxU6Tc8iJ
+IVU2IRwKtXhYSsxSR7jUZ0WElXLWpBmkE/HpE/2SIjo6oRnIIVRcAZn6ISJ QAVv4tD27Kdf
DQr+5MmfFNgc/M/lu0E5ZNSG0LfTpEGLWD7eU79B1UP/nYRJnNxJi61YoLxY jc3Ygd3YCPUJ
T13KVPjUtxLVu4EfEIUz+9kp+mKQEXXV1OoKf2AJ6ZHVB6hVW0WGURiFPdlV +5IhwqqxheIN
cAIhoxEZhtIdGdVLrszLp+XLphVLp41aqN1L9pNCqr1areXaqfVavKzasN3a r+1Lse1asB3G
njCGbR1Zbt1ShLKqSaGh4+ArFWKhHiu1GSIc0VoQNV3K+dQJp3kIqHmkwt0R PMiDUcCDUegE
xb3TB9iGfI2rzdEpyv0ZXglRtnEr4gGbyJTUcjSJz63UxdPBSx3d06XU1DXd 0fQjathWBfoF
UCUX5mrVBXnViRSIq7jZTlAF/2TIA2dg3DndE14FH+cYl1RFK6yhqjBNWYlA zmuV1mqVXui1
1uil3um13uy9ztXa1m7t0D7dqPj8W3YNXOnBCmqwiuj63XklBd99gDmNXPPh mvG5qflVT/Xh
MlXd3D1SUAf13/8F4AAW4AHeuWFyXdntshFF4P/glz/wjEtboD/YCVvtBDzo hDwgBWrYhj3p
A7l9j7zCsb09GJ3iGaoZ2r6yjoJg2ieVUhZGUmCEUhhuYSV9YRd2Uhq+4Ri2 4SitYRxeu9Z6
219TUxJNEDeF0/KQU56ghmrAA12F3PeV3PfMFPtIRzEsNjGsXQUxUZ3og20Q Xi+GnG3o4FDD
kna04v+uIkJ1HV8FeUyTQIU+eOM4hmM43s8zNpAqTmDGjNnNqhAT9GMU/OMQ DOQUJORBNmRA
RmRBTuQDxOJ1ZWP69Cc8tuM+wmIY881s0yUznuSm24mvLMxfE98F/o+KfABm GM5TMGXhFCRJ
3uSpGMqitAikxDUFtl1mWy0UlS9qYAbipSNNbmXFsFIsLUxQQEwX/bEhFmVJ g2Si0M+GkAYN
3RB//QlW/uWlSM3VbM3XjE2a9QfaTOFI6RbwBVY1yuISTS31Og8sMgSjNAni 3aI8lQZeni8+
hVFpbqVq1o/u/M7yEM8HIE/z3ND8vSd9smc1UuNk3g+lSS0Wa2Zfa2Y/Zdn/ bypCfM4PCdWC
CuXUgVgGaJbigW4OcZYkmK1lnWiVhLjZB8Bl62Oz90VpfY0pD/uc7fBlilYK VhLMLB2IRWjp
fUXa4Ykm3ckxNFUso3oSv0Vo/VBolCDcnUAFFX06KRuIbXjooaYxxEI1nLmd lOExoVba5KBm
i6CGZZAGmpYwk9jUIdPpga4y5a0ptqpft2KSckaQ230aJQvFCkHRavBb+ZRn RZOqoWGqo/me
0kCqsEAbupjpB1AGYnbmaVAGsmbHTp6IRbCFtN5Xy61bwZYO8dGygv6QUAZc kzixFPsXFrsK
KRtZKSPiv4Zb4KEfC2ofkqGZtDoISZblhiBmYoDs/8nyiUXQBsi1bLYotJPF XLcmYf3JElrW
4tRy4KvIiq2Q4J2Yghdr2wLzNdb265wa7vvln/y1KcRuCmWgWcZGTHzo5qSN qNHCGpDGEnQV
00px7yTciUWg7D3RBlig71eSlA+iFc3WGMQirFFj7xhB5tC2CM3wjM74DCWG rydr8NUO8B5D
NY3aHRrKKLgl0w9OYQCoYticTWlYBlC4h9jUz9z5ouK97BNnEsA4qwQbI0ha BBXdhuDOD5e9
Gc/WELmGkHO+E/Q4D3a2iC7Wa0FbSjFWqhq3DzMWb38wb3+4B2nYZhZ1zxSf 3I5e1SARl3KK
aaBYLcqm8Uzh29zckoM28P+lQIU5rQYp8wM0j2IThk+lWIZ+8Ac5l/MRp3NK M4szDVMU19y4
ra8kiSai9RydMYrj+vJGE+nlxuSe6ANR6AMNYzM/aPQxnqNjJIZ76Idp6AdM 13ROvwfy1t9v
1ZxFQ+4iyfL6Up5naq1DX0xHLuJlTgpqmIKj1hJFXAZMx/VN13URL+xQl19C l226XXEOjWnW
IYqvZjAdN5AtLiUzFvF+kAZdtwdpAAU6+W4Tj7Ml0vZhp9+vCVV+VS4xBG3y 7QlkV5MqLgZc
LwZQYAbnySEvPawaIiGhVaj23nChuaj4LmsC5vd+93f/bTHGpPX6YPaeoAZN sANQsIOBVxJf
BgX/ezDP3eZyKtVhH5bhHq74jJ9hjcf4jff4jm+xNS1z3h6KgweFdwAFTWB4 JJHkYrAHYxYi
HL8z/lRd0a151F3dnLd5nQ/4xKaMgjf4hEd5O8gQmUczxQAFUJf4yM5CjksF lnv665V67cXe
6rX6qme5gSBzcgdr9sIihE75f9GEk194MbfNep4Pc1/6fS/gBeK5acCHaXjJ uQ9YiqV7jL17
js17j+1Yu6/7j83Jnl95d5RZkv6JhAcFahD6xT7qFr/y2R3DtZdpYcU/jYMx f4AxqUXbsy3b
sd18stX8zuf80Cd9q9U9ox75gXDXhvjNk0/5k1cGYiB6yPdVpthy9JL8/wnD Nwi+tAil2T3x
B7nvNwi++W50ewb63FQofp3H+Z0/fUveY1bBXchJspC1A2V4B+xf7LI/HYvZ bMVCGcAy2h0L
dkE/WgDw+dxvRPP7PwZ6+vnD/GlAuajfAvq/+pFDfvmj+qm///3P3j0CCD+p qD0oaPAgwoQK
FzJseFBVLIWq/AGoWJGaqgfTNHI0SE2TsnqgRhKzQ1AhgIIpVR5cufLBS5YG Xap8mfImw5gV
W8qMCbNnT50FNzosavQo0qRKlzJt6vQp1KgGiXKpOi3V1axVuUzDN23r1lRg x5Ita/ZsVaxc
xaJt6/Yt3Lhy57otmOoutZNS9yKMlTHhnwcEAf/4yxt4ITU7yt6BsgPHjsmc Mn+23Dn5Mk3K
LHGiROjTok2bQCl/tsv3NOrUqlezbo0wVcGtN7jcZcvlRqotqWZXna2b920u utk2q337bjPc
YpUHr83W93Gxd7dEj363avHrs1MlF+48+HDtwoP3Hg8c+nnzstWXp57e/Xr4 7cmDp+/brp+8
rqNClEitMAB5TfNXQh+5I5ImeeknmWZCNegZT6TxxFlCpUVY4WiZWUjUUv5M o9d+IYo4Ioms
UVWVGGt9VdUDsHGRIoppwfgiVy+ytWIqKX4lxo0y1jgjkNLxaJWPO/ZIG4w5 boWjjjbG+CSN
UAK51ZRSUnmllVlGuWX/lVHadVeJTPmlUCHUYHXmNIUolNhijS3okEU1xSln aHTO5JJlP1Ho
oJyeWQbanZWB9hkAsDHVjJkHcRcmo406+qih41Wl26S0XbUVdZOylal33FEn FqW0iZppdpqC
iil2lE5D6nWictHMp95pWimom17HKa6oVrqrpL3myuuvvuoqLLDDblFQMwKB +ChD/RVYiCrQ
SrtsQSAh+CaczELYKIdKwWboUNR0qy255Zqr1IlYctGiYOyONWRaRLpqZFg7 1uhqkmDlK+S9
R/YIL779yvtuWTPqWzDCZBms7sEKJ/zulwOdq9CYTyXmJrULzTlxmOB6+x+4 qRTWTELcgdnQ
/8kcq8xadh4zVNtrBoFZnLex8aocoiO3yqlxrCJ3XXGpyvYzbaX2ituroeIs XdBpiWcydkAz
vfN6Nw8LHKdYV3301V1b/bWk+Em8ckHOWpxgxmSbOy5SsBGEpj+CsW0o2wjV rTbeTHG4t0Pj
dvvtUulOyW7cLmrZJeLqJn74lfYOvDiN9jrOpeKVM3455ZgvHnHeFef9eVMu I/VhYaX/dzrJ
ipqGMuitLyU6u6yrPlXsSUUa7KdNE7s77sb6XizwRg8H6+++3rVq8b0Dz3vy zS+P+1DK4m22
69X33ZS4+BT2AD7tai+uolcdJP5UWJVvPfp2l0y++OYPVX5WtAdu8/9Z/hhO F/75678///37
z2KL8JK2cnkufQaUmVNEdjrTmQ5cJAvZ6gwlwdUdsHqw81jKKKjB2tmOfugZ mnzq8x77sEeE
8SFhCD84nxGy8IQtXKELYwjDGZqQhiqsIXjwgy2VUa+C6bvbUWATN4IM8QEe mh1R0LS6JL7P
h66r298S4jf1ze8BlsscFiGnxStuUXNc/KIXw5hFMI7xSZzDWwGdaD3YIcV+ pFsg+GZnqNQh
MHZMVCPoIKhB0bmsj0y5nfOY97xAKk+QhiwkIgmpyEEy8pCYQpb01NZDPLYO iEgRF1YI4hW7
mY997tPImYbCRkqqLJThA+XelKgQUybFkqT/fCVqajNAAhIIlp8b5etGZstd kg2XvPzlHyNJ
tkkCc2KubOURpYgmXxazmVE5pjOjucoMriyN0iQXM9sGzWtycy9sPFZCltHN Yk5DmCsj5jgZ
tc10svNRdTPEFmCBEHGKs52wlOUstWVNe5Iom/z854hgB4MtwOAgywDFA0BR T4A6MRX5yae2
0MnQ1qxzohZFzbhisQVDcHQLEVmGP0JqxIXeySdPMWlDAFWUjRlFpX5Cqetg hsZaXtQ1/qwp
TqPisS1QgQuGUIUhuDDQB5wCFP0AxSkwpBkSieYynTlKU5+KFJg6KlljG2ZE cuqaimq1q61E
CCy0wFFDaCGrD1iG/z2Sui1HoZSqTk1pS5XiVkbJcqZeZc1N76pXh8CupwU1 SCseEAqpVsZO
gYLJTfD0Uo3p5E87+ZOfckKoC9VEUH067GPnehqHXvWcZt0rX1KZlWWOtrSk Pa1pU4va1aq2
tax9rWtjC9vZyra2tL2tbXOL208eJBZlNYg/EqENjfVJQxmqLGUzQ9yZRCiq EmLQc5dq3Acx
lzSajSU1VbZP0D4lr9z97gYNAs6CDMIVg1iudSGbXuVW963oFQqfEJun5bq0 sepN7mhIVM7O
8vCz4H0KV/8LWlcGNxvTyIZwn8re51oIv9B1LmId/N63xnepmMlvQAWotu0K uIMd/vAqG//S
ivJOQxvTMG9gK2Rf+UaYxSx98XxLOtnJDKqkKIFxYjem4/nmybHX3exDp+df EH+VyEbuCEO0
kYhsaAPBcUPfj8cp0w3T9MhG8a6VcZrN8p4XylEep1UhyiyJZlkhAS6zRaGp 5CejmVl1pXKb
rxzn//ozxXN2FGfF/Cgy3/nMd7ann//cz+xyjMN/xjJf9SxoAyJ60SPar6Ib xec5B3pNf5Cn
o21Z6Uy3Bp9w5nQd90KNw4CalI0uNV6DLMkhO3rTCCkEuEDkUlSDztW05suU yWboO5+6QH+A
jSpSQYX2UvXLtw7RNxVC0mOfJsxCpnWgo0WgsIY1FZh2r1KZTa7/d8ZznmfV Nnb5W+gqO7rR
hpAnUFuUAj9ogVqT9TG4tdVXoRrUFAlddrwTaM7+Qrsp4KyGbv7wB3JbOLrG zndqMrrRjn40
pHHzB7412+OkzBoqB/9lrqtJcEE3eguqoAYsPK6KdqO3uhBGeIl22tOfBnWo RT2qWtcK15Kv
NcoXTyekn43qQG/hBuCEBamzPd2Co/zRYKXCWH9bkFOklbErhW62Kb5XT+t6 44cW9R8MoaYb
27dORU+5Qgb614IMFqGdUWyPHWtZwmJ2x409rHzfHuEYU9KhO+TYpONs6wcU ohoPqMbWv15r
iin9AfcIxT0k09ShNzjqx6Vufh00Xbqb/5rQE9v1nHt9kK2rIgxLGdTNBf/H hYz3AXcohh0k
q17Gy7z1DKbxYi+8XmxT0tmr7rdUtlANWABc9INvyOGZIfxQ1G3ykXc9sR/v XOVK3qmhb92b
q05rzR8kBjeIge/z2JBQnJ4ZzWAG6gdb2BarFFAsbbGK5R6ntMuYxS7GU44x vm+8s3rRe89+
9Vx5jz4Inxl9SDz+2Y7lnQvmxRn1BaAFGcXppR4CttL8TUzetdn9NWDeQNM0 3AEAUuCVaZj0
odoBamDe+JP4gWBR2F2kMUoEotkEkqDKrCAIZpx2WR2vNYU0oII0MMMN5iAL TswH7qDtYRXu
LQUzGAQzTAMOFv9hEe7gtimhVESfxk0fDW6DYEhDQegFDjIhpGAhVOSZzpWa nw2hKqjCECLE
PSRh+2khRaFhAg2guRRgmzXaNPjdNkgDRhQCPD2ANBghFUKeGqZGsoVTH0aP uEFg/Qman6HC
A4QhIi7EGD5fIBoFt11bQdBTIFLdE3pgUzSD31EDM1SDtNmhwFVD6rQV/MEf +j3iQggUQRkU
QilUH5pgF4LaISYiLIyhQUhhQSyiSRlfdKHiQijcWHnUWTncSBUW5UEVxZ3f SbETDI4bFB4K
QYgiRvxU1mUdNYyiUhmfI7KgyvkUUAnVsbwcUkXWMRJdU5wc1FnUD3pWECoF IiriA0j/oRz+
Xews3uOdoi+aGViJFUcVHlrFXKCU4za2l9RpGV7YFSb+0SamgidKiyGEIrjA mI0RZD6GWEL4
1UGQgmDdGPqlHdop1tohn4+Fhtx1pETO3UCWCxfe3s6FDi3CxjzO403tYkU2 RN341mdpJHFx
BvONH0EuGIXdY/PJ3uSlpLk04+XJYOaFDjVsQzUMBFCpwh/0nWAYCuilH9zV pEUmROmRwjPo
JIbwpI5RluzR3OvxoftJV1DcFx7lHEt6Yeg4Bz36HV1ykFaGVlGQgt/lA1hO SC+W5U/O3Fn2
pMkF5l8a5VFy4CWWGvWlAio4JmQKxGPepR82BCl4ZTQ6w2VC/8ie8Fj8TeRl YWXbJRbcmR+8
nWY5pg8svqUsUuYT5WU+PABfPiJSEqBSGqBrQp9ReGVfquE68ltL5ubnbFNv qqETxuAzCife
+FNxouFKAmFwKqfauKAG1mYb3uYbNmFhUKdy9iALuiV0wuUWco/cSCdGmafM KCZyJiRTXKNz
1EZxsBl6JtB8toiqhWdrNsWHqBYHjVZ9HoVuBehuCSiBDqiBFiiCHuhrsSEt JWcuwZHpjMsE
BdF/2idnCYRA3AWGcpaGXmhtbGiGemiIguiHemiHbuiJcqiIliiKrmiKjqiJ uqiMkuiLsqiK
0uiMxiiOoujdEWI7okv3vI1pxQySFf8Fd1Ynh5qJkg4Eky6pkzYplD6plEYp lU6plVYpll6p
lmYpl26pl3YpmErpCTKKG6LZqSnQyMCRy2SHotBRy3wJHQVQd2aogtSpnd4p nuapnu4pn/ap
n/4poAaqoA4qoRLEmJZICpZZoH2IEbFLJhlRFCFReEXqkQqeJVYouZRpmZ1p A0EoBpVMyvAW
BpmMcK4mppZLombZon6Po2ZFHG0Q3VBRkXonBVrnqYaJpmYZp57OQDBQyNBM m4KJXKZnetIq
/jnbod4qaqSqlS0qEbUqViSTsr4Og06riOSqle1qYfTqAoXM8VTrraqntaJg If7ZoroNu2hS
eY6rABoruyb/BbYe2am558/Uq7sqJ7K+a5gw65FVqr4G0UH+a4nEq5Hdq8AG 0X0ebIjwq5H5
q8K+DLg+7F4QLJEZrMQyRL5eLGswLJE5rMYqSsR+rFNQLIj9am1chb2irMl8 a8rC58m6LMuu
7Jm0LM3KrMq2zM2+bM3iLMzOrM32bM7GLM/urM7+LNEKbdEOrdEurdI2rc6m Z4+K7F5wLIh5
rNTaqtQ+Bcl+mMVmLSRJTLJ67UJQ7YdZrcgep9hGxdZ2WNd6rammrVSQbYeZ 7cdiLdzCK3aa
6d2qRsburVPIrYDRrcbard8WxdoKWNtmrbgW7lIA7n8J7sUSLuMyxOHS2VPg wy/Y/yKy/ELY
KmvfTm5SOC54BRo+FIM6FAMdxYPpFkP3uG3Agu5SVC54nVozFIMxxMMvGEMz GMMvxIMx6O4Z
iqayvi3sIoXoflelgZ86+K7txsPpGsO2FFu2dGfIFm9v5e2mQgUw5K46AIM6 8C4wZGM6Oh5l
fq71OsTxcper/QI5qIP7ksMvKFhWzlha4iMqSu75FoTsfhf1/cIvqMP/+q/8 GlxzGSZift3i
5m+zlGufQcUx5II6tG8AH4P4xt1PjmXw+iL+5u/+clevGQMlwO8vUIL/kgMl QG8BF1yFqeVd
mq8CSwQDl0uCzrCCBqhTyAMEw68x4APvjoM65II8ZPD61f+XZ4KmBvtBhtKw EtcwEy+xEzcx
FD8xDXfwaqAphF4xA2GxFvtqFnfxFmOxFduPUzRDLvgvCj+AMZTxL8Tp2dLp F3sxHL+xHMcx
Hc+xHdcxHt+xHucxH++xH/cxA6XvanTF9gQp9xSy9yCyJinyIavrImdPIjty I5PnI1NyI3eF
91QaNeQuQvCurNWYwuJTITMyqxpyKUeyJZ9yJZsyKbeyJKvyJLPyK7tyKtOy LNfyLOcyLu/y
LfcyKvvyKv+yMAfzKlOxaoTxH+8xMgMyGPvqCy+FVQ1EMjMzNU+zNVczNl+z NmczN29xD1Vc
aJ5j4DwraDyrOTfqOReROreLOjP/atzECTmjszyvMxG5M0xArsR6Gj3PMzv3 czr7Mz//s0AH
NEHvs0ED9EEPdEIXNEI3tEI7NEM/tERHNEXTcwGhI+2Z5YOWDmFQQ4B0M4B4 KgN1dB9/dLea
TqE8s7e4MUhvs0u3NEy/tEzHNE3/B/Vcl7FtIyZrUoD8xCt7D1D/9GAE9U5z T0+bclBbcko4
clFvkkq3jQCRclIjtVCn8lRfdVVTtVVnNVZvtVdrNVh3dVhzNVl/tVifdVmP 9VenUYzxWGRN
5I69dcWFsUWgdEdXBEWYNF57dF3/R1+XDl2PtEnn9UUQNhd361MjhVU1Az7M tGPXNGQ/tmRH
Nk0Tkz0S/+XxOdjQaYQ5EwY79/RS7wQRgbZgeHZKvPM827NHr/NplzZrp7Y5 4/PD6jNEL7Rt
1zZuT/Rt63ZuV3Rv77Zv87ZwBzdxD9F2leIFs6XzpTB7BTYcWYRfC3Zh3/Xp DDbIjHQWW/de
h/RhA3ZiI2xUT7Z4U/Z4lzd5n7dNf9ZlS1hQajaGETJPPzIAdE9K4MNRl3Yp g/b2LPUlm/JR
67ckd7RP93cmw08UH7gUI7iCJziDL/htFWtejLIuA3MsD3OFE/OFZzgsb7gt WziHT7iHdziG
fzgvhziIj7iIx/JF41jckaQRw9toop8VQ7ddD8pzXwR0b3dhX3d1D4ph+zWN A//5SSP2dxdF
NEe4eSc5ei+5kjc5Hwuyaqh2cf82O0s5cBu0ast2KGvYlVP5cHf5l3v5lIc5 mY+5mYP5mBuz
HzJ5d790GCfu1bK0k885m9O5nVM2lCecWu85WlNyU/f5WDe1lh+sKKc1oB+6 oSe6WSs6nzM6
oi86pDd6pD/6nqv5ZtH5Ml/zmxe5kQsEY985qNe5qIf6NkOEg0sxmqd6lZc5 lsc2p/MVl4u5
qrO6rNc6rd/6mdt6rt+6X/Q6RPy6rwc7sA+7sBc7sR+7sSc7si+7sjc7sz+7 s/c6nJ+tFthh
tEM7tl+7tmc7t2+7t3c7uH+7uIc7uWv7KsQCup97uqNSeyyoe7uzu7vHO7zP +7rX+7vbu7zj
O73fO7/ne7/vu78HPMAPfL0PusCmgsCF4b/rO8MvvMMLfMND/MMT/MRHPMVL PMZfvMZbPMdX
vMdnfMMHBAA7
--------------060300010702060809070109--
Re: How to use OCL to avoid add two start/end nodes? [message #215506 is a reply to message #215452] Fri, 16 January 2009 13:41 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cdamus.zeligsoft.com

Hi, David,

I see an "Audit Container" action in you screen capture. Try creating
one of those; I think your constraints go in there (GMF calls static
validation rules "audits").

HTH,

Christian


David BY Chan wrote:
> Thank you, Christian. The OCL expression you provided help me a lot, but
> the interest problem is that I cannot add the constraint expression on
> Flow, because Container is invisible in GMF-Mapping file, only child
> nodes such as Start/Action/End, in other words, only Node Mapping/Link
> Mapping can add constraints. Look attached image, you should understand.
>
>
>
>
>
>
> Christian W. Damus wrote:
>> Hi, David,
>>
>> If your flow must have exactly one of each of Start and End nodes,
>> then this constraint defined in the context of the Flow EClass will do
>> nicely:
>>
>> nodes->one(oclIsKindOf(Start)) and nodes->one(oclIsKindOf(End))
>>
>> (I'm confused by your diagram showing an EReference named "nodes" and
>> your code snippet having a Java method "getElements()")
>>
>> If Start and End nodes are not actually required, then:
>>
>> nodes->select(oclIsKindOf(Start))->size() <= 1 and
>> nodes->select(oclIsKindOf(End))->size() <= 1
>>
>> HTH,
>>
>> Christian
>>
>>
>> David BY Chan wrote:
>>> I create a EClass Flow as container, on which there are a lot of
>>> nodes. Assume that I have three type nodes: Start, Action and End,
>>> all they are inherit from a generic EClass Node.
>>>
>>> in Flow, I defined the aggregation as blow:
>>>
>>> public interface Flow extends EObject {
>>> ...
>>> EList<Node> getElements();
>>> ...
>>> }
>>>
>>> Every Flow does only contains a Start node and a End node, but can
>>> contains more Action nodes, how to write the OCL constraints for
>>> Start/End in GMF-Mapping file?
>>>
>>> According to GMF, Start node in palette cannot be dragged on Diagram
>>> if Flow has already contained one.
>>>
>>> Thanks in advance.
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>
>
> ------------------------------------------------------------ ------------
>
Re: How to use OCL to avoid add two start/end nodes? [message #215671 is a reply to message #215506] Sat, 17 January 2009 04:06 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: lifesting.gmail.com

Christian W. Damus wrote:
> Hi, David,
>
> I see an "Audit Container" action in you screen capture. Try creating
> one of those; I think your constraints go in there (GMF calls static
> validation rules "audits").
>
> HTH,
>
> Christian
>
>
> David BY Chan wrote:
>> Thank you, Christian. The OCL expression you provided help me a lot,
>> but the interest problem is that I cannot add the constraint
>> expression on Flow, because Container is invisible in GMF-Mapping
>> file, only child nodes such as Start/Action/End, in other words, only
>> Node Mapping/Link Mapping can add constraints. Look attached image,
>> you should understand.
>>
>>
>>
>>
>>
>>
>> Christian W. Damus wrote:
>>> Hi, David,
>>>
>>> If your flow must have exactly one of each of Start and End nodes,
>>> then this constraint defined in the context of the Flow EClass will
>>> do nicely:
>>>
>>> nodes->one(oclIsKindOf(Start)) and nodes->one(oclIsKindOf(End))
>>>
>>> (I'm confused by your diagram showing an EReference named "nodes" and
>>> your code snippet having a Java method "getElements()")
>>>
>>> If Start and End nodes are not actually required, then:
>>>
>>> nodes->select(oclIsKindOf(Start))->size() <= 1 and
>>> nodes->select(oclIsKindOf(End))->size() <= 1
>>>
>>> HTH,
>>>
>>> Christian
>>>
>>>
>>> David BY Chan wrote:
>>>> I create a EClass Flow as container, on which there are a lot of
>>>> nodes. Assume that I have three type nodes: Start, Action and End,
>>>> all they are inherit from a generic EClass Node.
>>>>
>>>> in Flow, I defined the aggregation as blow:
>>>>
>>>> public interface Flow extends EObject {
>>>> ...
>>>> EList<Node> getElements();
>>>> ...
>>>> }
>>>>
>>>> Every Flow does only contains a Start node and a End node, but can
>>>> contains more Action nodes, how to write the OCL constraints for
>>>> Start/End in GMF-Mapping file?
>>>>
>>>> According to GMF, Start node in palette cannot be dragged on Diagram
>>>> if Flow has already contained one.
>>>>
>>>> Thanks in advance.
>>>>
>>>>
>>>> ------------------------------------------------------------ ------------
>>>>
>>>>
>>
>>
>> ------------------------------------------------------------ ------------
>>
Yes, It's Okey! Great Christian, Thank you very much, I debugged OCL and
Validation and found both are written by YOU, the code is beautiful and
documentation is helpful.

BTW, GMF-Xpand has a bug on OCL, it generated the required
Constraint-relative extension points, but missed the crucial dependent
plugin declaration: org.eclipse.emf.validation.ocl, Validation Framework
need OCLConstraintParser to analysis OCL expression.
Re: How to use OCL to avoid add two start/end nodes? [message #215845 is a reply to message #215671] Mon, 19 January 2009 14:28 Go to previous message
Eclipse UserFriend
Originally posted by: cdamus.zeligsoft.com

Hi, David,

Thanks for your kind words! The code isn't often described (certainly
not by me) as beautiful. :-)

Have you raised a bug for the GMF-Expand component, describing your
problem? (or searched the database to see whether a bug is already
there) It definitely seems like a problem, unless perhaps GMF has
implemented their own OCL-based constraint provider (which is certainly
doable).

Cheers,

Christian


David BY Chan wrote:
> Christian W. Damus wrote:
>> Hi, David,
>>
>> I see an "Audit Container" action in you screen capture. Try creating
>> one of those; I think your constraints go in there (GMF calls static
>> validation rules "audits").
>>
>> HTH,
>>
>> Christian
>>
>>
>> David BY Chan wrote:

-----8<-----

>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
> Yes, It's Okey! Great Christian, Thank you very much, I debugged OCL and
> Validation and found both are written by YOU, the code is beautiful and
> documentation is helpful.
>
> BTW, GMF-Xpand has a bug on OCL, it generated the required
> Constraint-relative extension points, but missed the crucial dependent
> plugin declaration: org.eclipse.emf.validation.ocl, Validation Framework
> need OCLConstraintParser to analysis OCL expression.
Previous Topic:Generation problem
Next Topic:Overriding ArrangeAction enablement computation
Goto Forum:
  


Current Time: Fri Apr 26 05:52:18 GMT 2024

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

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

Back to the top