Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Using UML Profiles with EMF
Using UML Profiles with EMF [message #427194] Thu, 05 February 2009 13:20 Go to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-SchwartzFriend
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi,

As a part of our modelling efforts for ORMF the use or UML Profiles has been
brought up as a possible strategy to enable adopters to extend our core
model. Since the architectural decision to use EMF has already been made, I
started researching how one goes about applying UML Profiles to an ecore
model. So far am not encouraged from my initial Googling, checking the EMF &
the DSL book and searches on the relevant EF newsgroups.

So I would like to ask this forum for their collective wisdom. Is using UML
Profiles with EMF a good or bad idea. If it is a good idea, I would
appreciate pointers to any relevant resources to better understand how to
marry the two.

Many thanks,
Joel

--
Joel Rosi-Schwartz
Etish Limited [http://www.etish.org]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^...^
/ o,o \ The proud parents of Useme & ORMF
|) ::: (| Open Requirements Management Framework
====w=w==== [http://www.eclipse.org/ormf/]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Re: Using UML Profiles with EMF [message #427197 is a reply to message #427194] Thu, 05 February 2009 14:00 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cdamus.zeligsoft.com

Hi, Joel,

(including the UML2 newsgroup for their perspective)

The MDT UML2 component has been quite successful with their
implementation of Profiles for UML. Also, it's possibly a little-known
fact, but the Profile mechanism is applicable to any UML-based
metamodel, not just the UML, itself. The UML2 run-time library supports
this in any generated metamodel.

So, because Ecore can be described using UML (see the
Ecore.metamodel.uml resource in UML2), one can, in theory, generate
Ecore with profile support. :-D Of course, it's probably best to leave
Ecore to describe itself.

In my own experience, the stereotype mechanism of Profiles offers a very
convenient extension facility which readily supports:

- optionality: the base model element has no reference to the
stereotypes, so stereotypes don't even have to be loaded if
the application doesn't need them
- traceability: UML2 offers the implicit CacheAdapter instance that
facilitates the retrieval of stereotypes applied to an object
- transparency: languages such as OCL have built-in support for
stereotypes because they behave in every respect like additional
metaclasses
- type safety: stereotypes are more explicitly structured than
EAnnotations, and with UML2's static profile definition, can even
have behaviour of their own

It's basically a clean implementation of the classic Adapter/Decorator
pattern, for models. Profiles in themselves are a good reason to use
UML2 and its code generation for your metamodels. Just define your
metamodel with support for stereotype extension, and any client
application can define domain-specific extensions to your metamodel
without the encumbrance of the tight coupling implied by metaclass
specialization.

HTH,

Christian


Joel Rosi-Schwartz wrote:
> Hi,
>
> As a part of our modelling efforts for ORMF the use or UML Profiles has been
> brought up as a possible strategy to enable adopters to extend our core
> model. Since the architectural decision to use EMF has already been made, I
> started researching how one goes about applying UML Profiles to an ecore
> model. So far am not encouraged from my initial Googling, checking the EMF &
> the DSL book and searches on the relevant EF newsgroups.
>
> So I would like to ask this forum for their collective wisdom. Is using UML
> Profiles with EMF a good or bad idea. If it is a good idea, I would
> appreciate pointers to any relevant resources to better understand how to
> marry the two.
>
> Many thanks,
> Joel
>
Re: Using UML Profiles with EMF [message #427198 is a reply to message #427194] Thu, 05 February 2009 14:00 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
Joel,

UML profiles make sense to apply to UML instances, but Ecore doesn't
directly have such a concept and I suspect you might even be asking how
to make your own model extensible without other people literally
extending the classes in your model. You'll see I often tell people not
to extend Ecore (and that they often ignore me only to complain later).
I tell them that instead they should decorate Ecore with EAnnotations.
Often people notice how conveniently EModelElement already supports
EAnnotations and are tempted to extend it in their model; please don't.
One of the cool things about EAnnotations is that they can contain or
reference any other type of object, so they can be used to embed or
reference data from other independent models. So this is the Ecore
equivalent of a profile and these concepts could be reused in the design
of your own model. I.e., define a root class that all your other
classes extend (like EModelElement in Ecore), define an annotation class
(like Annotation) and use it on your root class. This will effectively
make all parts of your model annotatable...


Joel Rosi-Schwartz wrote:
> Hi,
>
> As a part of our modelling efforts for ORMF the use or UML Profiles has been
> brought up as a possible strategy to enable adopters to extend our core
> model. Since the architectural decision to use EMF has already been made, I
> started researching how one goes about applying UML Profiles to an ecore
> model. So far am not encouraged from my initial Googling, checking the EMF &
> the DSL book and searches on the relevant EF newsgroups.
>
> So I would like to ask this forum for their collective wisdom. Is using UML
> Profiles with EMF a good or bad idea. If it is a good idea, I would
> appreciate pointers to any relevant resources to better understand how to
> marry the two.
>
> Many thanks,
> Joel
>
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Using UML Profiles with EMF [message #427210 is a reply to message #427194] Thu, 05 February 2009 22:17 Go to previous messageGo to next message
Hossam Karim is currently offline Hossam KarimFriend
Messages: 26
Registered: July 2009
Junior Member
------------akGYRa3d2y0AKQRnR4Xxpu
Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-1
Content-Transfer-Encoding: 7bit

Hi Joel,
We are facing this typical scenario in one of our projects. We started
by not listening to Ed?s advice and extended the Ecore metamodel. Now
that we realized we were wrong, we are investigating a different approach.
A profile is an extension mechanism, and Ecore metamodel is basically
architected to be instantiated by creating your own models. So, if you are
able to create an Ecore model that describes precisely your domain model,
what maps a profile is an extension to your Ecore model. Please have a
look at the attached diagram.


Hossam Karim


On Thu, 05 Feb 2009 15:20:43 +0200, Joel Rosi-Schwartz
<Joel.Rosi-Schwartz@etish.org> wrote:

> Hi,
>
> As a part of our modelling efforts for ORMF the use or UML Profiles has
> been
> brought up as a possible strategy to enable adopters to extend our core
> model. Since the architectural decision to use EMF has already been
> made, I
> started researching how one goes about applying UML Profiles to an ecore
> model. So far am not encouraged from my initial Googling, checking the
> EMF &
> the DSL book and searches on the relevant EF newsgroups.
>
> So I would like to ask this forum for their collective wisdom. Is using
> UML
> Profiles with EMF a good or bad idea. If it is a good idea, I would
> appreciate pointers to any relevant resources to better understand how to
> marry the two.
>
> Many thanks,
> Joel
>


------------akGYRa3d2y0AKQRnR4Xxpu
Content-Disposition: attachment; filename=ecore-profiling-sample.png
Content-Type: image/png; name=ecore-profiling-sample.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAAs4AAAFZCAIAAAAHBT4dAAAAAXNSR0IArs4c 6QAA
AARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADq YAAA
OpgAABdwnLpRPAAAR9JJREFUeF7tnV/obleZ30/vxEuvctEhp2rAixnGualO eiaJ
pRQRUVM7JgbTWNIO0XHGc3FARZlDWg+CBVPhQKQtBnsQL6QJcS5EKZ5a8E/1 DFFv
jgcqaSskgmAGTmnijIP9Hr/x8XHt/f7fz/vu9b6flx8/9rv3Ws9a+7vXu57P ftba
e/29D37w/Kc//e/P8EGBThR46qmn3vGOd3RSWaqJAtMr8O1vf/tNb3rTSy+9 NL1p
LKJAgQJvf/vbz9x1991PfukrP/nZi/yhwPwVuPChj168ePGXfFDghBV44okn 7n/g
wfn/WqkhCkiB737vh7fffhbUgLF6UgDUOGEPy6m/rACogQvvSAFQoycX21HD Kq0q
qIG/RQFQo7STwfi0CoAaoEZ/CoAaOFoUADWm9YVYK1UA1OjP0ZY2iC6Mgxo4 WhQA
NbrorKikFQA1QI3+FAA1cLQoAGrgxTtSANToz9F21LyKqgpq4GhRANQo6l4w W6EA
qAFq9KcAqIGjRQFQo8IjYrNIAVCjP0db1BQ6Mgtq4GhRANToqMuiqqAGqNGf AqeM
GpcvXz537tylS5cO6Gtv3rx57do1/d9nHa5evaqz1v99FjrnskAN/HdHCoAa /Tna
jppXUVVnghpPP/20vP7wc+PGjSIX9fDDD+t9wXf86lNUxCKz+aTuvfdeVWPP uKPi
9l/onkXeqDhQo6h7wWyFAqAGqNGfAnNDDTl+E4Cxow41ZFylPPfccxv5pN0T my0U
ybApM9aeAwygRnMdQY0Kj4jNIgVAjf4cbVFT6MjsTFAjuv6hFxRt2DFrvCNc svYo
pfZkFtFOf71y5YoOZYzQtvbETqV0PEMbOZkyNiMLHuCwTX20EfXxMERkl3En iI9S
aqfSBFhoj8BCqKGU3jkcQFGajU4tF9cIFYI4TYzUDEW2nk39G9F2x6zZWgA1 Ouqy
qCqoAWr0p8D8UcPhB3to/Ze78rbjH3bb9mGmBx91AnOAEvhQDJdEXiVTmCHS xBKM
EVCxV44SXbqyOzjhUsQTYdA11CcP0CiZvkbNI6P2NF4/zDrNhQsXlp9adt5D ofLw
kGAiBk2aQrOeyhK41og2W1DYvWKgBv67IwVAjf4cbUfNq6iqXaCGPbrv9eVX 5I8d
3tDogw+FPzYWyK3afXoOhF2mp16aS4ZRDadxsMGUYASxV7bXt7VwzCrdKU0S +mrg
cGhBe1yWcMfGtTGMamSv722VKwthzY7floen1qBGI9Q6qOFCzTTW0yc+FG13 jz5b
C6BGUfeC2QoFQA1Qoz8FekGNJrZvXAhiyLf+RgqxSHhNw4F8fx5tyW7YiSMg EY42
UMMxCX9szazjUEFk9KEYLlECj7bk/U2ajBrNIbn/UVrKpzZEjSzUOqjhWIhs NnqO
ijZbVtixYqBGhUfEZpECoEZ/jraoKXRkthfUyP5bPjhi+01UIyIcGQLC2Rs4 Mpd4
O9/ZN0eH0xoyECxBjTxq48iHT2EJamQyiFrlwIzr1hTaMFAWah3UcLwkj5VY w1HR
dvTos80OanTUZVFVUAPU6E+B7lBDLnwRMQw9aw5U6MY9ByRyYttcEtXID6Ou gxp5
0KTBi+WokYMijmp4zGj5qeVwyyLU8OCITyTzUwzujHJAI9psWWHHioEa+O+O FAA1
+nO0HTWvoqp2hxpyvYEaRoQ8V2M0qiGf7fmhnlrhsY/svIMM8lwNxz+2i2po 3MQV
8wMmzRwOz41wNbL9mCMSczU8w2MX1DCsOMQyihouNII9qpUrNirajh59ttlB jaLu
BbMVCoAaoEZ/CnSHGsaCJubfjHo0owyejhAzK4eJtSecsQc7IsKxHWpEJMPl 5kiG
owtBSKMPg0SC5uGaTQdQYk6rYUI1GUY1mqoGjoyKNltW2LFioEaFR8RmkQKg Rn+O
tqgpdGR2bqgx+p6JPChgpxJvzoi3XBgvckptx0svhq/izhlt06+RyK/B0M6V 9VEp
MdtUFnIFXKiOxss5XJDfnOGUQ/vOpRPML/xYcmrhZYdnpENRB+vjObPDQnVo +DKP
03l/OajRUZdFVUENUKM/BeaGGjvenpIdBbZQANTAf3ekQMeo8YlPPnb5M5/N Wuur
dnrPN777g69+7Zv6G14M71cCH8q5Rq9ckz7SLCliDi3gLW9926tf89rlNVGC lWnm
cC5NHUCNLTwTWY5MgY5Q4/vXn3UvGn9761WOuPd2Dz/q4/Ym7/oF9Yoa0lcD tI2b
zI5T2x481vXIcjzwnvd6f+R1ykUXTOzi9PoEncigfjxRRPDNqO4/+vFPVehH Pvbo
+ldlkpRveOOdKzEC1Dgy98PpnI4CHaGG+qLoRb2xHwd53L23Vd2Pkru7pGNG DfvR
IY7YB6+JGkIEXU5f1Pd/4Hwo7kYsjtH/5RhhKpKF3a/WRhZAjdPxOpzpUSrw zDPP
LDmv7lBD/eeeoxrH3XuDGvsY+18nqiGYUOOWm4+og8ZKTAaboobsNNRiR277 gRra
8H79/9znv+hxHDcI73RNVI3AnQi6OKUSuCxb0E5HyXJsRgEVhUlcHyV78ktf CQSJ
U4uaxKHIIlMRniGqcZQuipM6DgXUb5w9e/b8+fOjzNEdaozekkW/pA13Vov6 NyVQ
36UeUr1WJB7t1nJ/6FvEdXpv9bfRLbuq6/feSqy6qTKunv5swdWT2Rx7iF46 PIIr
vKT3HnoWpQc1ZoQaHuaIiILdtnduFNXQlfbIi/26mqC2PSwSqOFtFeEW48Sj jdVV
UjIHRYwRAU8+ajrxtq3Fr8tftT/Ckq6VfioOTkaWOEcXJAvNrw7UOA6fxFkc pQL+
OfszZI7uUCOiGnGr434pejn740X9W3R3ceu1qFtrUGOd3ltdqGsS3bI21u+9 o9ru
fn3J3LvG6bhWzSmH+1jSe496FlBjH5yRHXMeU2gAwo7Wfld4kbFjC9RwW7S/ D+zI
qJFtOrEHXIYDKHnOR+QK1FA9oxm5OLdCA5MHbgI7XAF/dSN24ETWwrLBKOIi jsSY
TvpFjYceesgvbuKDAseqQEaNIXN0hxpxCu7K3C/F7ZD7vSX9m114dH1LurUh aqzs
vd15RoQ4blDX7L0DNRzMdh/r09RcvaYrjlMOvlnSeze9dPYsRDX2QRtrDqBE 29W1
dyP2QytboEbkyk0nUCN+Ng42uBG4qQ0bq35UDohF9GKYLDejbME/iXj0Jh/y SfkX
G4wVCvjHEwEPx/c6RY1/8S//lW7y7uGDAketwChqeOfrXvc6vd/s/gcezPda s912
b9ZENdwh5wlw4XFH+7fGszr7aLc2RI3lvXeAQu69DQRr9t5NX5pvQfOhBqTy oUW9
9xLPAmrsAzUaInbbGo1qxHDJ6NFoZIvm8eZG42CGnb1/IXE00Ed74s+E2zTW qI8s
5FkjTbJFqOH9G6FGjr9F3RxZ6RQ1eNj1KMcLOKlGgSFqiDAuXrx4/fp1pewu qtHM
1XC/1KDGkv6t8axLurVR1FjSe0dPmHvvCA/HTaOSLeq910SNHIRufNYi1Fji WUCN
faBGIEJM+TQwOpDQXPgYPItBhO2iGg5e+WNXPRxAUcyjubdoGCL/wHKAZE3U aBpr
tpZ/pXkAZckjMKAG7g0FZqtA9DaZMKK2vaNGE5lWj6r+cGX/FveE6zzZl/vn 5b23
O0/fHOa/NXvvNVGjOWVXyT5rUe+d4zFN3UCNPaGGm5EvVcBEtJXsROPp6ggG DFEj
pvDEWKCv6zAUloEmH43xOc9CksH4VcTMIB3K84+2GECJ93nk8RcPmvj5GkcU 43R8
Fi7IU1bzq71Ajdm6GSqGAqOE0S9qxGCHuiPfqkUH6C5LHeaS/m3oWRd1a6NR jbg7
jdvR3Ht7PpzqoG5cf0oTMZh1eu81UWN4ysE3S3rvRZ4F1NgTati5hluVB82P fepr
xDDUfJUsPy+ajwoLYohOG01Az09ARezErTCHUvQ1+MYzMOy/ZTYiHKqndzpj jJvI
mp/g0k7Pds4PccUP0vXP86GMC/rLT65myypCZeVTzs/HxjlmHRpknvNXBlBw wyjQ
UVQjpqZFT2vUUM8WXVl0SvGEf9O/uaPOc+plYbRbi75ro947P+yavck6vbdK zH2p
+t7sJppuNtc5x1HCLwx771HPMirIbPvtXl/hNVtBqdgeFAA1cLQo0BFq7KFP oIiZ
KwBq7C8GM/Om0FH1QA0cLQqAGh11WVQV1AA1+lMA1MDRogCogf/uSAFQoz9H 21Hz
KqoqqIGjRQFQo6h7wWyFAqAGqNGfAqAGjhYFQI0Kj4jNIgVAjf4cbVFT6Mgs qIGj
RQFQo6Mui6qCGqBGfwqAGjhaFAA18N8dKQBq9OdoO2peRVUFNXC0KABqFHUv mK1Q
ANQANfpTANTA0aIAqFHhEbFZpACo0Z+jLWoKHZkFNXC0KABqdNRlUVVQA9To TwFQ
A0eLAqAG/rsjBUCN/hxtR82rqKqgBo4WBUCNou4FsxUKgBqgRn8KgBo4WhQA NSo8
IjaLFAA1+nO0RU2hI7OgBo4WBUCNjrosqgpqgBr9KQBq4GhRANTAf3ekAKjR n6Pt
qHkVVRXUwNGiAKhR1L1gtkIBUAPU6E8BUANHiwKgRoVHxGaRAqBGf462qCl0 ZBbU
wNGiAKjRUZdFVUENUKM/BUANHC0KgBr4744UADX6c7QdNa+iqoIaOFoUADWK uhfM
VigAaoAa/SkAauBoUQDUqPCI2CxSANToz9EWNYWOzIIaOFoUADU66rKoKqgB avSn
AKiBo0UBUAP/3ZECv0GN+x54UD04fygwfwXuPHfXxYsXcTYocMoKCDV+9/d+ f/6/
VmqIAlLgT973gdtvP3vm6tWr6rv5TK7AO9/5zsltYlAKPPvss6fsZjh3FHjh hRfo
CioUuO+++yrMYvOpp546w++2QoHnn3/+tttuq7CMTRRAARRAgQoF7rnnHt17 V1jG
JqhR0gYef/zxM2duRYxKrGMUBVAABVBgUgV0f6hO+5FHHpnUKsZeVgDUKGkK omNa
bYmyGEUBFECBAgV8f0g0ukDaWyZBjemFNR3TaqdXFosogAIoUKOA7w+JRteo C2oU
6Go6ptUWSItJFEABFJhegbg/JBo9vbi/skhUY3phg45ptdOLi0UUQAEUmFqB fH/I
GMrU6oIaBYpmOmYMpUBgTKIACqDAxArk+0PGUCYWl6hGhaCZjhlDqVAYmyiA Aigw
oQLN/SHR6Am1DVMMoEysakPHtNqJ9cUcCqAACkyqwPD+kDGUSQVmAGVqOYd0 zBjK
1BpjDwVQAAWmVGB4f8gYypT6MoAyuZphUC/PPnv2bJ19LKMACqAACkyrAG8L nVbP
bI0BlBJtQY0SWTGKAiiAAmUKgBpl0vKwa420oEaNrlhFARRAgSoFQI0qZXmv RpGy
oEaRsJhFARRAgSIFQI0iYWWWAZQSbUGNElkxigIogAJlCoAaZdKCGjXSgho1 umIV
BVAABaoUADWqlCWqUaQsqFEkLGZRAAVQoEgBUKNIWAZQqoQFNaqUxS4KoAAK 1CgA
atToessqczVKtAU1SmTFKAqgAAqUKQBqlEkLatRIC2rU6IpVFEABFKhSANSo Upao
RpGyoEaRsJhFARRAgSIFQI0iYRlAqRIW1KhSFrsogAIoUKMAqFGj6y2rzNUo 0RbU
KJEVoyiAAihQpgCoUSYtqFEjLahRoytWUQAFUKBKAVCjSlmiGkXKghpFwmIW BVAA
BYoUADWKhGUApUpYUKNKWeyiAAqgQI0CoEaNrresMlejRFtQo0RWjKIACqBA mQKg
Rpm0oEaNtKBGja5YRQEUQIEqBUCNKmWJahQpC2oUCYtZFEABFChSANQoEpYB lCph
QY0qZbGLAiiAAjUKgBo1ut6yylyNEm1BjRJZMYoCKIACZQqAGmXSgho10oIa Nbpi
FQVQAAWqFAA1qpQlqlGkLKhRJCxmUQAFUKBIAVCjSFgGUKqEBTWGyl69evXS pUvP
PfdclejYRQEUQIEdFAA1dhBvRVbmapRouztqXLly5Y477rj33ntL6rd3ozqR M7/6
nDt3bu+FUyAKoAAKrFYA1Fit0bYpQI1tlVuab3fUUAxAqPHwww9vWr8bN25s l3HT
gjZKryrpc+3aNVVvo4wkRgEUQIH9KABq1OkMapRouztqLKqWXPVwDEIuPHZq ezR4
sMTNK+8oASjLsBqjO3MyWWvSaI84g3hGSVPDKAqgwEQKgBoTCTliBtQo0XZ3 1JC3
jgEUbyvCIW8tjMhBC4+zxE6n9FCFNjQ3QqenjHlncIDdfxzNKHDhwoUwq21r pEGQ
4c4sn3glp3FIpqnS5cuXSxTHKAqgAArspsDuqKHubuXN2G513GtuddfyC/Yj O35A
jR0FHM8+CWpEcMKBCn+V4/e24xAxMKEBFx26efOmE5gztNNptFNGfCiQInOD t80B
wpewIFzwfBFtaKfteOKFkjUnbxJSShUd202VGEApaXAYRQEU2FmBHVFDnZt7 zu0q
Mre+0X2+Xcx2Z5RzgRq7azhioQI14nq7BcjTe2BCHyOFP4sGUHw0t5vAlMAL xyFM
Cdlmk1GHjBT5zJtyo24rq1RyATCKAiiAAhsqsCNqqDTdhm0xwc4Z1anOKiIi RyAf
MdUzg6DGho1xveQVqBHRCMUM1ChjcCQCHoaDIWo8/fTTbjQRxhhiR841xNgI q/iQ
7TRzL1yrGG3JdLKcftZTlFQogAIoUKvA7qiRB1BiepxuCxUwzj5b29oTOxXP 8A2e
UgZtKI2+RnDaZ66UTuB3BzSBEGdpylJ6pRwGobOUtubbV+/3wLc+eSLgLuqD Gruo
tzDv3lDDbS4iXUPUcARC7Vgb0XrWQY38w3BgUEb8Q/KnoV21b6XJT+cGsoAa JY0M
oyiAApMqsDtqDMPGZgiPRLjP9AS7+GhPpInxF3Wno/d1vmmMdwcove4krUHM 27MR
U0hM78s7s2ZBOVFJQ4nvJ/2Z5J0LoMakTfXXxvaGGoHAEezK44WaJ5GDDWui htux
w4D6bThQkUdbvL8RLsr1oUweoEZJI8MoCqDApApMjhpxh2aX71C0+1J1zuYD /R9G
NdR/xgsP89y4QAcRhu8w89w7mXVcRIdkM3f+Sj8KDTbuSXjutGXEt6xENSZt XDXG
9oMaEWxw+xvO93SELUZYMkdHi7cAmQb8Zg63ORO0fxLeE2Mxw2HFPI0oQzSo UdPK
sIoCKDClApOjRiCFo8vuS2PKfB7+8M6mU/WLAzyd35jiZBHJiCBKth+KuK92 PLu5
z4w0OQwT9l2N5tCOQhPV2FHA8ey7o4YDEn4kJG/rax6lEwH4Idj8EKlasHbq 49kb
HmFRK1cDNSy70tqIbRcRLVgW1L79mJPp23a8U9YWjfxpvwpyxhz5iHMpkRuj KIAC
KLCzAhWo4Url2y1tx4hJzCFtUMNp8hhKRo0gkqCBPIEvY0TcMTb3mcNaeU+u Bqix
c4OqN7A7atTXkRJQAAVQAAV+o8B+UCPu3OzXfUPYoEYEJHQoY0STLGjAUedm UoWP
LnmEJD8nmFEjv0lhqvZBVGMqJX/LDqhRIitGUQAFUKBMgf2ghmLDdv8ecTZq xIuL
4mVIogRFLxRUzvM8FqGGoUHWFLf2XA3/j1l3KkKWm1cYBOLkuRrN5I+pxAY1 plIS
1ChREqMogAIosB8F9oMaMTKSJ9h52mbMyow3MXp6XDNXYziAEsGPMNI8gWIQ Gb73
03M4nMuljxrfXX9QY3cNRywQ1SiRFaMogAIoUKbA7qjhCZiuYN721xjL8Hy7 Jsbg
Z0Yiu7/G25I8Zy7eqxFF5Lml2lZUI78ew+V6qtySt5EOX+AxLGtH1UGNHQUc zw5q
lMiKURRAARQoU2B31CirWveGQY2SSwhqlMiKURRAARQoUwDUKJP2l6BGibag Roms
GEUBFECBMgVAjTJpQY0aaUGNGl2xigIogAJVCoAaVcr+EtSokRbUqNEVqyiA AihQ
pQCoUaUsqFGkLKhRJCxmUQAFUKBIAVCjSFiZZa5GibagRomsGEUBFECBMgVA jTJp
QY0aaUGNGl2xigIogAJVCoAaVcoS1ShSFtQoEhazKIACKFCkAKhRJCwDKFXC ghpV
ymIXBVAABWoUADVqdL1llbkaJdqCGiWyYhQFUAAFyhQANcqkBTVqpAU1anTF Kgqg
AApUKQBqVClLVKNIWVCjSFjMogAKoECRAqBGkbAMoFQJC2pUKYtdFEABFKhR ANSo
0fWWVeZqlGgLapTIilEUQAEUKFMA1CiTFtSokRbUqNEVqyiAAihQpQCoUaUs UY0i
ZUGNImExiwIogAJFCoAaRcIygFIlLKhRpSx2UQAFUKBGAVCjRtdbVpmrUaIt qFEi
K0ZRAAVQoEwBUKNMWlCjRlpQo0ZXrKIACqBAlQKgRpWyRDWKlAU1ioTFLAqg AAoU
KQBqFAnLAEqVsKBGlbLYRQEUQIEaBUCNGl1vWWWuRom2oEaJrBhFARRAgTIF QI0y
aUGNGmlBjRpdsYoCKIACVQqAGlXKEtUoUhbUKBIWsyiAAihQpACoUSQsAyhV woIa
VcpiFwVQAAVqFAA1anS9ZZW5GiXagholsmIUBVAABcoUADXKpAU1aqQFNWp0 xSoK
oAAKVCkAalQpS1SjSFlQo0hYzKIACqBAkQKgRpGwDKBUCQtqVCmLXRRAARSo UQDU
qNH1llXmapRoC2qUyIpRFEABFChTANQokxbUqJEW1KjRFasogAIoUKUAqFGl LFGN
ImVBjSJhMRsKPPfccxcuXDh37tzTTz99QFlu3Lhx7dq1PVfg8uXLly5dunnz 5p7L
pbjjVgDUqLu+DKCUaAtqlMg6Y6P2+s3n3nvvrauyyjpz5swdd9xRWspo/UU5 sV8V
UDX2TBs+9z0XWncpsTwTBUCNugsBapRoC2qUyDpjo4Eadr1mjlIIUEH67F+S plyd
uE5zzwEGUGP/1/0USgQ16q4yqFGiLahRImsPRodeUDffGmVQJEAx/4gHXL16 VV+v
XLmSIwRKKZ+tPRog0KF8urLg9N6pDQNNvrN3RiXLO2OAQ4dUqPK6PjainTbo 6jlB
fJRSO5XG6Z3XqBFGhgMom55aLq4RSqWEPlImzmsosgtt6t+I1kPzoY6HVADU qFMf
1CjRFtQokbUHo0MvaN/saIfcofyft+O/Hbn8qOnB+73tM3744Yed3sMlThkf 2VQa
RRciow5FQMUGXSsbtB3vsVnBROSVHRcaAzROZsrJRdhaPl+dSJi1Zedacmr5 kjZC
RS6n0WnGoElTaNZzkWg9tB3qeGAFQI26CwBqlGgLapTI2oPRUdSwm/dtt/yx 0MF4
Ib+uQ/oa/thfNdPT7tO39SYDn70ngTZRDZm1a9eGsrgOjlgEMTg+EbhgZAky 0CF9
bMQFKYGDBCox9g+jGvl8lUUpdVJKlq0FGzWn1lxPn3IItSZquFDLYj1V9Kho PTQf
6nhIBUCNOvVBjRJtQY0SWXswuiiqkQdKfB5ypUEMgRqBFOE1Aw7y+Evjhp3Y 4Q19
TB456pCHYxw8cEqHCiKSkQ9FJQMvvKdJk8930aHR2sbYTVxVZw+h1kQNc5gS h56O
6Bhcsmg9NB/qeEgFQI069UGNEm1BjRJZezC6CDVy3eUL82CBmWDUs5oeBAox RuA9
TeKm0Hx0eX2MGsEomRU8IuNPjnasyROqZBS95NSyLI3ldVAj4iVRVW0YNYai 9dB8
qOMhFQA16tQHNUq0BTVKZO3B6ErU8MQL39Nnb7rSH9t3OiDRJLbNJqphj7sd ajjc
4pGdJpKxCDU8ZhHxkija80YjyqL9Dd80UY34OhoL0c58UsNCmzaSReuh+VDH QyoA
atSpf+ZTn/rUXXffzd+0CrzxD//wla985bQ2sWYFmqcM6n4b21leiRqeW2DU MCIs
j2r42RAl1iMYi1DDZKCjea6GB022Qw3PtDBqhPHADs8S9YXI9r2d52qsDNhk kRtS
EaP4pDQPw3TiySujhVpPaaWK+SmeoWjbXdAZ5rp+/frddNoFCrzqVa96/R/8 AT3t
5Ap86EMfPiOj/+bSv3vyS1/hb1oFrnzhv0xrEGtS4L4HHrx48eIMe/+o0krU iCmf
nmTg/8q+6NY/btw9kJHnkMbEjqAW++MckNgONVyoPX18fI6eF9LMBTEBeFZH 1EHb
sX+LqIYMGstcDZc7RI0oNOqpPaOizbnZbFS3J5544h//k39KhzC5AnTak0sq g5/5
T//59tvP3kINffnJz17kDwXmr8CFD3105qgxfM+EZyxmX5LfnKFD+a0VsZ1f I+Gb
dT8oG3ZyRu/0ayTyazC8syk918elxAu4msR+8YZKb/YrnhGlDO27qsNXdIye WpZl
KJRjKq6DUSbOtDmp4cs8RkXbyKPPNrFQ4/4HHpz/r5UaooAU+O73fghqAFid KTB/
1Jitf6JiR6MAqIEL70gBUKMzL9tR26qrKqhxNP6SE9laAVCjrofB8uQKgBqg Rn8K
gBpb+ycyHo0CoMbk7hCDdQqAGv052rrW0ItlUONo/CUnsrUCoEYv/RX1ZK4G nNGl
AqDG1v6JjEejAKiBC+9IAaIaXfrajlpYRVVBjaPxl5zI1gqAGhV9CzaLFAA1 QI3+
FAA1tvZPZDwaBUCNIqeI2QoFQI3+HG1FO+jLJqixT385fGfGRqXnN3ZslJHE yxUA
NfrqtU68tqAGqNGfAqDGPt1wvGl05VIjw1r55aexLMs+q330ZYEaJ+68+zp9 UKM/
R9tXC6uoLaixTz/aLBCf34O+shqgxkqJtk4AalT0LdgsUgDUADX6UwDUWNM/ LRn7
8IvGR+00b/serp+Sc8lOk95H87onRDXWvF4bJQM1ipwiZisUADX6c7QV7aAv m6DG
Sp8k7x5rnmnD67vqo22tXqbV2nw0QhROr3VGYn21yNJENWKBeMGEF4rzQmiR Pq8k
59XRQI2V12uLBKBGX73WidcW1AA1+lMA1FjpmcwTWn5MBJCXZQ8ykPs3Q3iR 2Fif
XV/NB0rp5c0WoYY5w+vIuwinj7VnZcorsoIaK6/XFglAjRN33n2dPqjRn6Pt q4VV
1BbU2MgzDVnBTKABFCNFoIaxQx+v264gxyLU8CSMSG86EXZ4fwRLZAHU2Ohi rZ8Y
1KjoW7BZpACoAWr0pwCosdIhCSOECw42OLTgyRM5wpG/OqoR4Yf8dTSq4QS2 FqVo
p/eLPGLGBqix8mJtlwDUKHKKmK1QANToz9FWtIO+bIIaK52T3b/DDItGQPLD qw1q
eOzD5DGa3eEKJZP9+CixStR+UQ6osfIa7ZgA1Oir1zrx2oIaoEZ/CoAay71U M4rh
wEZENSLq4FEPY0FEKRQOMYLokB9RGUWNGHy5efOmK+PEsV9G9HFe5mrsSBWj 2UGN
E3fefZ0+qNGfo+2rhVXUFtRY6brMCp65OUSNPLCiSZ0ZNeJQRCYWBUUc+VD6 KCXP
87AdHwI1Vl6vLRKAGhV9CzaLFAA1QI3+FAA1VnomRRQUtJCn10iHYELO3uEH E4Ai
HAIFP6JiUzGAovSCDE8I9Ufbkd2zMeKQhktkRKWorDBlay7a2/nQypqTYE0F QI0i
p4jZCgVAjf4cbUU76MsmqLGmNxoma6aFRoJmrsbW9sm4NwVAjb56rROv7Wmh xuXP
fPYTn3wsX/Inv/SVj3zsUe/50Y9/+tWvfVN/37/+bNMsvF9/3u9cw2SRq0kf +5XF
h1TWRi3v1a957Vve+rYlWWRzZZqNSpxzYlBja38Gamwt3dwyHj1qRC+6XZ+5 dQ+2
/95bVVXvrb+t6zz/jKeFGrqWGl0OYtDlecMb74w98uV+LLC55AIU79fnG9/9 QeQK
Rmkus9JE+oZsXJw+y7lh2G5UJeVdjhoyuzzN/JvjmjUENbZ2e35aZJhdwyss wbq1
qgfJeNyood41elFvLOpv1+w01kx2kN4b1Di2wYXlqGEO8H/FLaJpCgvs6QNK vL2o
6QtlzCsNH7gRG2g2ZQJQI/cUoMZBfBuF7lmB69evLynxFFBD/WTEGDaNBK/J FsMA
9v57b1DjFFFDcYgcddCQhwcmNkUNpTdVOBCivwfe8159dYwkUENMY5RxKXlQ RulN
GMqSUUMGI4vS2Lj5ZlOC2e7XePBcoMaefR7FHUQB/aJf97rXXbx4cZQ5TgQ1 hr2N
7vHU0bnDjN5VO+PuLmLJ2nD/qf/RN0Z27fnc5784ihpr9t7qrt1Lu3/ON6iL em87
gujwo/4MoBwVbawT1fCkhxhDMXm4sW4U1XATV5b3f+C8W7PNZiZQ0zRB+5fg bSdW
rjjk+GH8VGxHCcwuHosBNQ7iDCgUBeoU8A/fnyFznAhqNDMnPLDiPlP/HVr2 TV3s
1Lb3R+Lo0r1H6Y0m2s58kDvSlb23u3T3zDEybmtLem9XVV230mRHA2qcImq4 oaip
qdG4QXtjU9TIYbFouJkJ3OxcUPxg/DW4RNs5EGL0ibGbqN6pocZDDz2kRyj5 oMAR
K5BRY8gcp4AacdZxD+aOMaK/GlXxwHQkiPu3QA11kjH4kj26U8at4DA8HIlH e293
xRFXNsT466LeO8bQ8/2k6QTUOEXUcINQA/WGW892qGGYiFESP4Fi49G84mfj xqr/
zY/HKZ0lpnoYpSNOc1Kocd+733P27Nl7+KDAUSswihreedttt7373e/+4/se OPho
ZlEF3BnmuRoqKHrmXGjj8rPbjh7V6aNfdefpLr0ZdB7eCi7qvZsbxci4pPd2 VSOM
7d7b942gximiRlz4AIWtUcM4HBNLm5GOhtDXQQ3/PEQ/Shx/jdmiH/98zDJX oy5o
j+X5KDBEDRHGI4884leinUJUYwkHRHeUwwne2QyXRAw4JuznzrOZrpFRY3nv 7a44
YtLroEYevok6eLoGqHFUqBHjZBEry84+xy08hpLjcttFNdyGbMqTlXJTbhpr Jptc
sTyA4sbaBP1Ajfm4B2qCAlMpEKiRCSOMnyBqNGMTGhZRyCEAwr26h0XMKE1U I7Iv
eZilCQ8v6b0bxMk986Lee0nsGdQ4KtRwK4wQlptRuO0ME/F0dQzFDVHDjSOG NoKy
m/YUU5Y8UJKPCqhzPC1H8zzl08ZjQ9n9REwENnSUaaFT9ezYQYFZKTBKGCeF GjHW
oI7Ot2p5xqWOOmKRO0l3j45VDFHD2ZVeh/wkSH7N0vCebUnvHV1xjMXEJJJF vXdU
1fNSHe1uIjHzCR5PW5PTeoWXmTeeFFUTifCXG7HnZ1hiP+CaH1XVV+OCH5eK v+Z9
XEqjQ8EoavT5qwzqa/CNjxpZIosrEI9LKY2242h+2DV+gTbbWJi2rczHGgMo s/KI
VOYgChx3VEMdde5jo6NzR+0OM78dID90GmMifti1eY9iPOzqLreJcGzUe+eu OD95
u6T3jkOmqHAEyr7pex3n0yGvU5OTQ411RCHNzBUANQ7i2yh0VgocN2rMvAui epsq
AGoc1QjRppe/0/Sgxqx8HpU5iAKgRqfd12lWG9QANfpTANQ4iG+j0FkpAGqc ps/u
9KxBjf4cbadNbcJqgxqz8nlU5iAKgBoTdimYqlYA1AA1+lMA1DiIb6PQWSkA alR7
R+xPqACo0Z+jnfDyd2oK1JiVz6MyB1EA1Oi0+zrNaoMaoEZ/CoAaB/FtFDor BUCN
0/TZnZ41qNGfo+20qU1YbVBjVj6PyhxEAVBjwi4FU9UKgBqgRn8KgBoH8W0U OisF
QI1q74j9CRUANfpztBNe/k5NgRqz8nlU5iAKgBqddl+nWW1QA9ToTwFQ4yC+ jUJn
pQCocZo+u9OzBjX6c7SdNrUJqw1qzMrnUZmDKABqTNilYKpaAVAD1OhPAVDj IL6N
QmelAKhR7R2xP6ECoEZ/jnbCy9+pKVBjVj6PyhxEAVCj0+7rNKsNaoAa/SkA ahzE
t1HorBQANU7TZ3d61qBGf46206Y2YbVBjVn5PCpzEAVAjQm7FExVKwBqgBr9 KQBq
HMS3UeisFAA1qr0j9idUANToz9FOePk7NQVqzMrnUZmDKABqdNp9nWa1QQ1Q oz8F
QI2D+DYKnZUCoMZp+uxOzxrU6M/RdtrUJqw2qDErn0dlDqIAqDFhl4KpagVA DVCj
PwVAjYP4NgqdlQKgRrV3xP6ECoAa/TnaCS9/p6ZAjVn5PCpzEAVAjU67r9Os NqgB
avSnAKhxEN9GobNSANQ4TZ/d6Vn/BjXue+BB9eD8ocD8Fbjz3F0XL16cVb9P ZVBg
zwoINX73935//r9WaogCUuBP3veB228/e+app55S381ncgXuu+++yW1iUAo8 88wz
e+7ZKQ4FZqXAs88+S1dQoQCddoWqsik4PjOrn9DRVOaFF144e/bs0ZwOJ4IC KIAC
R6/APffcc/Xq1aM/zYOcIKhRIvstiDtzhlZbIi5GUQAFUGBqBZ5//nl12o88 8sjU
hrF3SwFQo6QdvPnNb6bVliiLURRAARQoUODxxx9Xp33bbbcV2MYkqFHQBjR6 8opX
vIJWWyAtJlEABVCgRAGNnqjTJhpdIi5RjQpZPXpCq63QFpsogAIoMLkCHj3x hzGU
yeVlAKVC0l969MSfD3/4wyVlYBQFUAAFUGAiBTx64g9jKBOJ+ltmmKsxsaox euJW
y3MoE+uLORRAARSYWoEYPSEaPbW0L9sDNSYWNo+euNV+61vfmrgMzKEACqAA Ckyk
QB49YQxlIlFbM6DGxMLm0RPGUCYWF3MogAIoMLUCefSEMZSp1SWqUaBoM3rC GEqB
xphEARRAgSkVaEZPGEOZUtxf2yKqUaEqNlEABVAABVAABYhqVLYBDf7df//9 lSVg
GwVQAAVQYEoFzp8/zxJLUwqabBHVKBFW6yHx7EmJshhFARRAgRoFWAOlRtdb VkGN
Em1BjRJZMYoCKIACZQqAGmXSgho10oIaNbpiFQVQAAWqFAA1qpQlqlGkLKhR JCxm
UQAFUKBIAVCjSFgGUKqEBTWqlMUuCqAACtQoAGrU6HrLKnM1SrQFNUpkxSgK oAAK
lCkAapRJC2rUSAtq1OiKVRRAARSoUgDUqFKWqEaRsi+++CJLnxRpi1kUQAEU qFBA
L9XQG58rLGOTARTaAAqgAAqgAAqgQKECoEahuJhGARRAARRAARQANWgDKIAC KIAC
KIAChQqAGiXisgZKiawYRQEUQIEyBVgDpUxankCpkZYnUGp0xSoKoAAKVCnA EyhV
yvIESpGyoEaRsJhFARRAgSIFQI0iYWWWAZQSbUGNElkxigIogAJlCoAaZdKC GjXS
gho1umIVBVAABaoUADWqlCWqUaQsqFEkLGZRAAVQoEgBUKNIWAZQqoQFNaqU xS4K
oAAK1CgAatToessqczVKtAU1SmTFKAqgAAqUKQBqlEkLatRIyxooNbpiFQVQ AAWq
FDjuNVBu3rx57dq1Ku1W2SWqsUohjqMACqAACqBA5wpcunTpzJkzh6INUKPz 5kP1
UQAFUAAFjk6BGzdu3HHHHQ8//PBUZwZqTKUkdlAABVAABVBg7gqsE1pQGgUh zp07
NzyZJdlHD3nnEDW0/7nnntuPWEQ1SnRmDZQSWTGKAiiAAmUK7GENlHvvvVex CjGE
/l+4cEGn4uiFPj4tsYW2BQFO5pSiBB8dZo+dshaWZdPpY6fMKkASAyhXrlyJ xBMG
TpZcGVCjpNnyBEqJrBhFARRAgTIFqp9AsbOX+xdJCBq0LZevs/F+8YS+ekNT OJUs
OOPq1auRbJhdGGEo0SFvy7ghJva7uEANw42qIcsmnuoPqFGiMKhRIitGUQAF UKBM
gWrUyNEL+Xg5fkcUNIrhQznBcABlUXbjxeXLl7MpbXvEJEgiohpRnAlmPx9Q o0Rn
UKNEVoyiAAqgQJkCpahhdHCgwp88FcMckMmgQY0l2Y0aMUsjiMT7gyfyXI0o Tmn2
AxygRkmzBTVKZMUoCqAACpQpUIoaHs6QaxcTxCdmZQ7ho0GNJdkXoYZ5wtGO CHIE
kYgwnCCmiZTpesswqFEiL6hRIitGUQAFUKBMgVLUUK1jhoTPIDjD8Qb9zxM4 zBbm
AE3dWJJ9EWoIMmLehsDCcRSjRgCHZ6Hu4TkUUKOk2YIaJbJiFAVQAAXKFKhG Dc/6
lGu3g/fEzJg5odPyBI4IMxgO9N9PoIxm1/5FqGE6sQUHVIwaESDxntHnaSfX GNSY
XNJbBkGNElkxigIogAJlClSjhmHCz4lo8MKPn2iPSCImTCgU4SdQdEhMoGT6 xNFh
diXLWfRV2WPQRByj7AqWqCzZDMv6qv2qRqQsE/Vlw6BGicKsgVIiK0ZRAAVQ oEyB
414DpUy2tQyDGmvJRCIUQAEUQAEUQIHtFAA1ttONXCiAAiiAAiiAAmspAGqs JROJ
UAAFUAAFUAAFtlMA1NhOtxW5WAOlRFaMogAKoECZAntYA6Ws7nM3DGqUXCGe QCmR
FaMogAIoUKbAHp5AKav73A2DGiVXCNQokRWjKIACKFCmAKhRJi1vC62RFtSo 0RWr
KIACKFClAKhRpSwvJi9SFtQoEhazKIACKFCkAKhRJKzMMoBSoi2oUSIrRlEA BVCg
TAFQo0xaUKNGWlCjRleszksBrafgNyiv+dGLlmOdpzWzkAwF9qYAqFEnNVGN Em1B
jRJZMTpQQIsa5M/eVjRQRbzItReCWvPjVabWTEwyFNizAqBGneCgRom2rIFS IitG
f1sBO3uv3OiP1lVaIpI8/YSrOIIatMcjU4A1UOouKKhRpy2WUaBWATv79eME xpFh
nZYMaowe8s5R1PCi2E0R2qOhE+0kqlHbILCOAnNVANSY65WhXiiwSoFFqGGk 8MLT
Wipa208//bT+Rwgkgh/a8H7919rWLtA79TUOGRT0CTtOkAdQcvocXIkitAFq rLqk
HEeB41QA1DjO68pZnYICgRoxXcOTNDVjQxAg165wQoyqKI0RRBue0iEKUTIh guwo
sbavXLni2IOhRIe8Hehg+FBG5w3UUEYnkykjiBJETcwlNrV+DOYUriDniAIn ogCo
UXKhWQOlRFaM/rYCw7kaMd5hv+7/Dm/o0wyg5K9KE3zgXMYRw4r5wMXFbA8D jaeF
OlwRwY/IYlOKhYxWgOuJArNSgDVQ6i4HqFGiLU+glMiK0THUGI0TOMyQyaBB jSGm
RGLzQVBLcIOowqEO1yLP1YihFieO6EUDNwyg0ITnrABPoNRdHVCjRFtQo0RW jK6N
Gh4QsaePeZrZ8SsCYbYQMcTHKRehRoySjKKGjCs0EqYc4TB2RLQD1KAJz1kB UKPu
6oAaJdqCGiWyYnQ91PBoiGjDcQhPm4iohnjCUzpMHhG9CCJZhBqmE7OLPk7m ARST
TX6rh4vwfgdCPODCXA1a8WwVADXqLg2oUaItqFEiK0bHUCOiF/Linr+Zp2g4 ruDp
GhHq8HwLRymUwMGGwI5FqJEtRC6jhijEBfnVHdr2fkOPS/FRUINWPFsFQI26 SwNq
lGgLapTIitGBAsO3hSqcEM+YKLmmZOprzAxVgEHAEeEH7fezIYp8+PEThx+U Jd44
nq3pqL4qvS1ky4pz+JDtR3YVoT2yrw19Nnq7KBccBfapAKhRpzaoUaItqFEi K0ZR
AAVQoEwBUKNMWpZbq5EW1KjRFasogAIoUKUAqFGlLIvIFynLGihFwmIWBVAA BYoU
YA2UImFllgGUOm2xjAIogAIogAIoAGrQBlAABVAABVAABSoVIKpRqS62UQAF UAAF
UODkFQA1SpoAa6CUyIpRFEABFChTgDVQyqRlAKVGWp5AqdEVq7+lQLzoE11Q AAV2
V4AnUHbXcJEFohol2oIaJbJi9NcK6L1bfv9mLO9+EG1U+v4r0CzhdpATp9Cj VADU
qLusoEaJtqBGiayzN+o3Y8arOevqa3fbvMezrjhb1gtA9dLPeN1nXl++uuhs H9TY
p9onVRaoUXe5QY0SbUGNEllnb9TLm+3h3dtegmTPenjV+Fyulj6JRdr2VhlQ Y29S
n1pBoEbdFQc1SrQFNUpknbdRLfzhQQ1zgFdO9/IfHu9QAjlmfbWzVJq87Ii+ ar0S
pfehmIehnV6lTP8VL5FZL4fmPTqqUhxNsVlthPtvSndeVcP1cXbtdN48FOLV TGzQ
67I25XoNlGYARbni1GKZFW0sOrW4njau7K6JvkYup5FoUb0GNUJPJYjV6hvR 5t1w
qN1cFAA16q4EqFGiLahRIuu8jY6ihuHDZOCl0bQR8KH99o4Oh9iJOouDB163 3W7Y
gxdD1PDqqUaHoBBL1ZTusETQQN52Si83r2QmD9fWq8OPokb2+nnZWOdydGfR qeWL
mSumvPraxIfykrDDQkNPHRoVbd4Nh9rNRQFQo+5KvIwa3/rWt7zuYvPRC7aj bNKs
r88XvvCF2267zenR0E1oqvZT92PY3fJwACVctY3HeqfaVrSg8cfGC6UJbyof HwQQ
1WsGMuzjI0CSvzalh0d32MNcYrxQGCAPjkRcxBzjig0HUKKeRiJ7en2CfgI1 hqc2
ihoRy1kHNVxoRDusp4oeFW33izs3C9evXx/ttPWkfVSVNEOJlujz+te//rHH HlMW
NHQTmqr9yNSZP//gB7/+je/8s3/+rnN/dNfw74f/8//87ObP/Uea9fW58x+d +/u/
8ztOj4YTtp/Ln/mPTzzxxNw6/ajPKGqEA3YyMYG8u2/TG9SISR6GAPldT72M oIgt
NC7f/j7gINchBwCGGaOU4aFYXN5pVqLG0LtH0UNo8KkNUSPPAlkHNVxohHNC z1HR
ZttmtqjYl7/85YuPfvwvHv34aKf9xSf/Mjpt0gwlWqLP2bP/4B++4Y3KgoZu QpO0
H3nAd73rvjN33X33k1/6yk9+9iJ/KDB/BS586KMXL17confeT5aVqOE7b49N OPyQ
RxmGqKFqx/SOPMCRIxCTo0ZEOFQfV3glavjEHSDxZw+o4UItZnw8IDUUbT8N YD+l
iLbvf+DB+f9aqSEKSIHvfu+Ht99+FtSAsXpSoAvU8DzKxuMOvw4HUEZRwxnz qEoT
1XDgoRlA8QO320U1crQjD6wsGUCJoRnXNg+77BLVsJKeOxLBodge1qfx9Fm0 /UDA
fkoBNXDhHSkAavTkYjtqWKVVnTlqhMeNR0gaZx/TI+IdXMujGjoac0JjXkLj Yk0D
MY4wDHiE/xtlFI9l5EMRyYhpoTG04UEKV6lBmfxcjJP56ZjtUMOw4rKs4RA1 ZNyF
RpTIaUZF2w8E7KcUUKO0k8H4tAqAGqBGfwrMHDXkaeI50njYNT9EGk+Wykcq DqH/
fijUz3bGA6KezKFRAH3iKdYYntBOHc2jFfFsp3xt3t88jOqnSCKBS4kRh+aQ vbuq
5Cdm7URV59ivr439/ByvOWPJqWWv3FTMhww6+mjD1fD+JYU6CjIq2n4gYD+l gBrT
+kKslSoAavTnaEsbRBfG548a+3E2lHLKCoAaXXRWVNIKgBqgRn8KgBqn7GI5 dysA
auDFO1IA1OjP0XbUvIqqCmrgblEA1CjqXjBbocDLqPGda39149mfVBSATRSY XAG1
Wr2JFWeDAqesgF4w9c3vfH/yHxcGUaBCgf/9/Av/7b9/48zP//bvKqxjEwWK FDhl
H8O5o4AV+Olfv1T0+8IsCkyuwP976RegBsMonSmAs0EBFAA1JneHGKxTANTo zMvW
NYWOLONmUAAFQI2Ouiyqegs1/uzPP/hfv/4/0AIFulDg05f/w5zXQMEFosAe FNAa
KB+7+G+7+MFSSRT4wQ//1x+fzhoolz/z2U988rF81bXyy0c+9qj3/OjHP/3q 176p
v+9ff7ZpGd6vP+93rmGyyNWkj/3K4kMqa6PG9+rXvPYtb33bkiyyuTLNRiXO OTFP
oOzBk0URfnuYXyfavDhrZTX8NvF41frK9CRYXwGeQJlzH0XdGgVO62FXOWO9 wDiI
QVq84Y13xh75cr8FWcmyTAIU79fnG9/9QeQKRmk0VZpI35CNi9NnOTcMm6mq pLzL
UUNml6c5mtYPaqzvkHZP2SwwG68GX8ey33QOaqyj1aZpQI2j6dBO4URAjd+g hjnA
//M6t8ICe/qAEm8vQg2hjHml4QMjiIFmUyYANfKvEdTY1C3tkj6vu6Z3h8c6 9evY
BDXWUWm7NKDGKXjoozlHUKMFCMUhctRBQx4emNgUNZTeVOFAiP4eeM979dUx kkAN
MY1RxqXkQRmlN2EoS0YNGYwsSmPj5ptNCabTdgxqrHROWqgslk2JVd88AqIl QmIR
k1h+1suviAycK2fJqLFo5RHt9yoq+sQKL9qpgohqrLxY2yUANTrtvk6z2qBG ixqe
9BBjKCYPOfstUMNU8f4PnHfbstnMBOIMxz9k3PajXOWKQx5zCYywHSUwu3gs BtTY
rr8+1lxeClUkocXP1EjygqhuTk4QHOCVV72wWazOanEyauS1VUUSyiL7Xlsu iojs
3glqFLUxUOM0fXanZw1qjKCG3bxAwdMy7P63QI3AC20EdmQmcNjDBekvfw0u ibxG
DaNPjN1E9UCNog69U7MRYxiygtqPF1yNdee1bdSIdVONC4pJLEIN2c/pveK8 Qine
H9hh0GGuRkUrAjU6dbqnWW1QYwQ1PKlCXtwbHqTYDjVMDzFK4idQIkRhnohB EwGE
McLl5tmpMYASUz0cCImJrqBGRW/etU0vuR7RCz9CksMP+atRI5ggfx2Nasi4 kUJH
c4DE+2O5eeZq1DUhUOM0fXanZ31aa6AsfwIlw0RMnjAobI0aDmbExNJmpGML 1HAl
RT8ikvg7tQEU1kBZ6cDMB3L5ggaPYmyEGo5SmDxGUSOiINqIj0IaoMbKSzNV AtZA
6dTpnma1T2sNFIcE8lTK7OwzangMJYcWtotqeAzFpvzgaw4/2GYzgGKyyRXL M0kd
+Yj5H9FqTyqqobOeqr8+SjuOJQgRRidb6JAHUDxn08maARTTiQZEFqFGU0TI 6P0M
oOynXfG20NN0252e9Qm9mNzTMA0QMfoQbjvDRLwbI7hkiBqmgeFjqI3XN9/E QEk+
+rnPfzEqE4/auhl5yqeNx4b2+4mYCGz4OZdTi2qAGis9mVnB00KbqIZ/AjHq 4QkZ
Rg1TgtMvIpVm+qfGaJTXz61ksrEdpoWuvFK7JDhN1PAbFDd6C6LSN6846tRb L6r2
OifoKPgBT/yEUEMq54dL/RxpSC/m8PyMmKSZv8r366vnVeiCeaqE/5r3cSmN dgaj
iCfyV9nX1+AbHzWyRJagDaOG0uhQHM0Pu+qof0I221g4YKuqLnqXDvoU8ipu YZgw
CmjbE0Xt/jXM4Y1mcoa4xNCQH17Vzsi+6GFXJYjnZvPDrn56VsWdgub7P8dD oYZ7
rfy33JEvebHyFh2FI7v5TYwrjQxvCJVl07NYWcr6Cfz2hOxfnNc+SH+bMsHo CTb1
sZdZv5KTp2QNFJZb60wB1kDZ2qs100LDTjMtdGv7ZNybAgdcA8XOPp7Sjxue Uec0
+ZoJU6HGRmcxod91YNuf5ubQNKD9knSjEuePGqe1BspGF4/Es1WAV3ht7c9A ja2l
23/G8+fPP/PMM4vKPeATKHbSQ3coJxpRYW048BBTzfLaT4pzaL+ftot+JrJ7 saom
FhIrTw1Rw4fyK5491iwjjluPeuJFZ+H62Gauns+lKcgrZ/lQjpGPVsmWYwy9 CTPE
CxEabX0iKrcJ5Cw5wVF5DxvVOK2HXWfrO6nYRgqAGlu7PT8tMsyuGaDa73mg fGai
gG98z549O8occ0MNTyOLSWn27vkOXuficQG//jju4OPOPqa++cTDlLLkBaqa SXUO
AzTBAHn6mI/vEeohGC1CDeFF5JVljw25zhGNiLGPMOI6KGVkXxSfCNTIL3BS RtfT
EwqjtkqTy43B+iUnuFzejXraCRODGp2NHUx47fs1BWrMxBdSjVIFwrGNMsfB USMG
UML/2e/6UXxt+C5/GNXIRJJXbwjfLGdsnjCaxFuVNbvClvXxLb6za7+27blN Bs6u
miivtxehxvAsbFPWVERMt3SddS7amV/THPVRetd2UZVy8Mb1iVWxHIORfeUd fZ20
ziI0WXmCS+Q1DB3kD9Q4jO4HudhHU+i/fuQDd99990U+KHDUCjSoEV8d53j0 0Ufv
f+DBg/yom1kOeV58xBjCtTdP5Jkb5K21X3+ZD+wj/WiJk9my08RMSX81akTs RF/j
JUbeH25VBpdENYaokfNa3ibSkO0HXcWFWFSlIWqEHXFGRDiyXM2J52osOsGV 8h6k
wahQUAPU6E8BUOOoPSwn97ICM0eN0amLvuN3VMBerUGNwBQ7S//5Tj27z+H7 h2Km
QszViNGZbKoJDLgOS1CjOYvRFxS5xPw2o6iqDwUGLapSdvCjMBEGl5x4HBpW Mk5w
TXn3DxygRn+Odv+tZG4lMoBSGrfH+EwUmPkAyhA1YrrGImhQT+LYw+hj+Yty LYpq
RHHDDmr9qEZzFqM2m+W4h1GNQI0lVRqNasQaFKFJxghzWxjPkZ5FJ7imvPvv 0kEN
UKM/BUCNmfhCqlGqgFFjztNCPQgSj5bYNcrbZR8Z3tcPmMRXPzCiPfFOjkWo Yfep
o36sw7I4yOF5GLbgxy48/uL9YpSVczU8dzWfRczz8FwN/UWd81wN01IT1VhS pVHU
MLX4jCxIRo184jFXI9YBHT3BNeU9GGp859pf3Xj2J/svfp4lqvW40Wu2kZ8y cvP1
W7yax5/WOQW1kt1fYpNf0rXkSapF9VHlm1eNrVPzeaZhDZRSD4fxmSiw/GHX A66B
4vWl88ePgGqPgwTN0yh23nGDHk9zxMSOGOaICRbNGEFYUII8V0PJwog7bSOI uu5w
4X4p1jAGM3oWypsf7giOGT6B4joPUWNRlRahhk9n0YnHgJQFzG+GXHSC68i7 /479
qNZAyQ/5eOzKM5M3+ouIlt9L48uZCTqGDNc06x+J7OxIG/m350nOEVhbpyZ+ kmqd
lF2kmYkzoBoocEAFDvW2UN985z/djPkNE/G+8HivhvsTv3YijsaLH/LLMGww u+Tc
Z+aXbTSdsG+9lCCn17YBSAZVmdFbxOFZuHRXT/1/zjX6fovmrKPyo1XKpzb6 QhEn
aG5NldIPwjSnsOQE15F3//388byYPGbEaCNgcNMghD16fnF4xPfy89xrXqdY dSXo
eM2Mw2QZNdz4NmIXUOOALoGiUaBCgQOixtb9GBlPVoFjQ40IlOUns02FCnIo HhAc
LW71u+hjiMQrpAgL9N8xgzyA0qCGEvuV9fq/yOubeBwiyxE8M6/t20K0P+1X PQUT
HvKIwExGjWYAxXgrO36OPJO1jXjAkqhGRXePTRQ4lAKgxsm67R5P/HjWQHFU YxQ1
PIyXxwtjXCOG+uyw88ifp0eMDqDkRVltfJQ2YqJTkyaqGhWLantPrrBpI6NG HiCM
YVHDhGrr9M1L6/KUqx6baa4za6AcyrdR7nwUOOAaKL13INR//woc1RooGTVi WpDv
8u2D/d4Yja7ll73oaMQetN1M81mEGvbrxgtbG86ciLepRBExFhNjPQICv2FG FnJV
HefwxCVTyCLUiFnfHmL0JJUo0dOIbOdooho8gTIfh0dNDqXAAd8Wun9HRYm9 K3BU
D7vGc1ARmYiBieae3u45HP8iL66rO4oaEUjwo1DD8RE3C5fiGIOjIBG6aIAm Pzje
VDW+LqqkE7gm8exM0FVMVTmmARRQ41DujXLnowCo0bv3Pan6HyFq2O82CwM2 /tsA
EdMaNkUNp3f8IP7yfAu3oTwWE8M39v0NauSvW6CGISb+/FDr8JSJaszHT1AT FNhR
AVDjpFx17yd7hKiRZ1/G5Wn8rqMIAQf5DWtrDqCsnPoQSwQFAZg2XKhLiYek jT5+
N0ue1RFGlgygOO/wQZsGp1ZWuKOmTFRjRy9F9iNQANToqMuiqieKGuHCvRxf niqx
Jmr4QRVP/vDb8Rpn7wSmB/9lboixHmX0OEuEHPLoj7c9C2RR6CVmqMi+H4rx wFBM
B/FjMqDGEXgXTgEFQgFQA//dkQJHhRp+49boOzGHjja//U1HgwlsJOZ4ypq+ +o0x
eTu+mhL016DGqGuPlOYAG7SFqIDT+FA+Hb+EzmdnPIpKCiZigEYbMQfFuONc TtNR
01xSVaIaeFwUADWOozc7kbM4KtTY4prJf2/6jq+mlO1eOp5jJ82b74JRNPl0 o5d0
jZ6LFx3YQpk5ZwE1cLQoAGrMuY+ibo0CL6MGa6DsuWU0wzS59GMa6ShSlTVQ cLQo
cMA1UIp+15g9YgWOag2Ujq6TXxIaIx255hrsOJp10equCJ4GBVCAt4XW9TBY nlyB
43kx+eTSYHC2CuBmUAAFQI3ZdlBUbKgAqLHZ0q+0oTkogJtBARQANebQF1GH NRU4
njVQ1jxhkvWuAGug4GVRgDVQeu/HTqr+R7UGyklduVM+WZ5AwdGiAE+gnHIf 2N25
n/rDrt1dMCosBUANHC0KgBp0hh0pAGowUaM/BUANHC0KgBodOVqqCmr052hp taAG
jhYFQA16wo4UADVAjf4UADVwtCgAanTkaKkqqNGfo6XVgho4WhQANegJO1IA 1AA1
+lMA1MDRogCo0ZGjpaqsgdKfo6XVsgYKjhYFWAOFnrAjBV5eA+Vvf/F3P7v5 c/39
xaMfP/dHdw3/vvjkXzoBadCnUeAgbQNPgwIo8Nf/92/UIX/9G98Z7ZTe96d/ Fp02
aYYSoY+bx97axkt/84v/Dx7I6TAct2oFAAAAAElFTkSuQmCC

------------akGYRa3d2y0AKQRnR4Xxpu--
Re: Using UML Profiles with EMF [message #427226 is a reply to message #427197] Fri, 06 February 2009 18:26 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-SchwartzFriend
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi Christian,

I am not clear from you post if you are suggesting a way to use Profiles in
conjunction with EMF or if you are simply arguing that Profiles have
features that are difficult to achieve with EMF. Would you care to clarify?

Many thanks,
Joel

On 05/02/2009 14:00, in article gmerdl$kdj$1@build.eclipse.org, "Christian
W. Damus" <cdamus@zeligsoft.com> wrote:

> Hi, Joel,
>
> (including the UML2 newsgroup for their perspective)
>
> The MDT UML2 component has been quite successful with their
> implementation of Profiles for UML. Also, it's possibly a little-known
> fact, but the Profile mechanism is applicable to any UML-based
> metamodel, not just the UML, itself. The UML2 run-time library supports
> this in any generated metamodel.
>
> So, because Ecore can be described using UML (see the
> Ecore.metamodel.uml resource in UML2), one can, in theory, generate
> Ecore with profile support. :-D Of course, it's probably best to leave
> Ecore to describe itself.
>
> In my own experience, the stereotype mechanism of Profiles offers a very
> convenient extension facility which readily supports:
>
> - optionality: the base model element has no reference to the
> stereotypes, so stereotypes don't even have to be loaded if
> the application doesn't need them
> - traceability: UML2 offers the implicit CacheAdapter instance that
> facilitates the retrieval of stereotypes applied to an object
> - transparency: languages such as OCL have built-in support for
> stereotypes because they behave in every respect like additional
> metaclasses
> - type safety: stereotypes are more explicitly structured than
> EAnnotations, and with UML2's static profile definition, can even
> have behaviour of their own
>
> It's basically a clean implementation of the classic Adapter/Decorator
> pattern, for models. Profiles in themselves are a good reason to use
> UML2 and its code generation for your metamodels. Just define your
> metamodel with support for stereotype extension, and any client
> application can define domain-specific extensions to your metamodel
> without the encumbrance of the tight coupling implied by metaclass
> specialization.
>
> HTH,
>
> Christian
>
>
> Joel Rosi-Schwartz wrote:
>> Hi,
>>
>> As a part of our modelling efforts for ORMF the use or UML Profiles has been
>> brought up as a possible strategy to enable adopters to extend our core
>> model. Since the architectural decision to use EMF has already been made, I
>> started researching how one goes about applying UML Profiles to an ecore
>> model. So far am not encouraged from my initial Googling, checking the EMF &
>> the DSL book and searches on the relevant EF newsgroups.
>>
>> So I would like to ask this forum for their collective wisdom. Is using UML
>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>> appreciate pointers to any relevant resources to better understand how to
>> marry the two.
>>
>> Many thanks,
>> Joel
>>

--
Joel Rosi-Schwartz
Etish Limited [http://www.etish.org]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^...^
/ o,o \ The proud parents of Useme & ORMF
|) ::: (| Open Requirements Management Framework
====w=w==== [http://www.eclipse.org/ormf/]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Re: Using UML Profiles with EMF [message #427227 is a reply to message #427198] Fri, 06 February 2009 18:31 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-SchwartzFriend
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi Ed,

Thanks for the clear reply.

On point I would appreciate if you could clarify. You say:

I tell them that instead they should decorate Ecore with EAnnotations.

I you suggesting that ORMF also discourage adopters from extending our Core
model?

Cheers,
Joel

On 05/02/2009 14:00, in article gmereo$kfv$1@build.eclipse.org, "Ed Merks"
<Ed.Merks@gmail.com> wrote:

> Joel,
>
> UML profiles make sense to apply to UML instances, but Ecore doesn't
> directly have such a concept and I suspect you might even be asking how
> to make your own model extensible without other people literally
> extending the classes in your model. You'll see I often tell people not
> to extend Ecore (and that they often ignore me only to complain later).
> I tell them that instead they should decorate Ecore with EAnnotations.
> Often people notice how conveniently EModelElement already supports
> EAnnotations and are tempted to extend it in their model; please don't.
> One of the cool things about EAnnotations is that they can contain or
> reference any other type of object, so they can be used to embed or
> reference data from other independent models. So this is the Ecore
> equivalent of a profile and these concepts could be reused in the design
> of your own model. I.e., define a root class that all your other
> classes extend (like EModelElement in Ecore), define an annotation class
> (like Annotation) and use it on your root class. This will effectively
> make all parts of your model annotatable...
>
>
> Joel Rosi-Schwartz wrote:
>> Hi,
>>
>> As a part of our modelling efforts for ORMF the use or UML Profiles has been
>> brought up as a possible strategy to enable adopters to extend our core
>> model. Since the architectural decision to use EMF has already been made, I
>> started researching how one goes about applying UML Profiles to an ecore
>> model. So far am not encouraged from my initial Googling, checking the EMF &
>> the DSL book and searches on the relevant EF newsgroups.
>>
>> So I would like to ask this forum for their collective wisdom. Is using UML
>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>> appreciate pointers to any relevant resources to better understand how to
>> marry the two.
>>
>> Many thanks,
>> Joel
>>
>>

--
Joel Rosi-Schwartz
Etish Limited [http://www.etish.org]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^...^
/ o,o \ The proud parents of Useme & ORMF
|) ::: (| Open Requirements Management Framework
====w=w==== [http://www.eclipse.org/ormf/]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Re: Using UML Profiles with EMF [message #427228 is a reply to message #427210] Fri, 06 February 2009 18:34 Go to previous messageGo to next message
Joel Rosi-Schwartz is currently offline Joel Rosi-SchwartzFriend
Messages: 624
Registered: July 2009
Location: London. England
Senior Member
Hi Hossam,

Thanks for sharing your experience and for the helpful diagram. Have you
actually achieved all or part the of transformations that you indicate? I
would be keen to follow your progress with this.

All the best,
Joel


On 05/02/2009 22:17, in article op.uowf6zvihvsg55@hkarim, "Hossam Karim"
<hossam.karim@gmail.com> wrote:

> Hi Joel,
> We are facing this typical scenario in one of our projects. We started
> by not listening to Ed?s advice and extended the Ecore metamodel. Now
> that we realized we were wrong, we are investigating a different approach.
> A profile is an extension mechanism, and Ecore metamodel is basically
> architected to be instantiated by creating your own models. So, if you are
> able to create an Ecore model that describes precisely your domain model,
> what maps a profile is an extension to your Ecore model. Please have a
> look at the attached diagram.
>
>
> Hossam Karim
>
>
> On Thu, 05 Feb 2009 15:20:43 +0200, Joel Rosi-Schwartz
> <Joel.Rosi-Schwartz@etish.org> wrote:
>
>> Hi,
>>
>> As a part of our modelling efforts for ORMF the use or UML Profiles has
>> been
>> brought up as a possible strategy to enable adopters to extend our core
>> model. Since the architectural decision to use EMF has already been
>> made, I
>> started researching how one goes about applying UML Profiles to an ecore
>> model. So far am not encouraged from my initial Googling, checking the
>> EMF &
>> the DSL book and searches on the relevant EF newsgroups.
>>
>> So I would like to ask this forum for their collective wisdom. Is using
>> UML
>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>> appreciate pointers to any relevant resources to better understand how to
>> marry the two.
>>
>> Many thanks,
>> Joel
>>
>

--
Joel Rosi-Schwartz
Etish Limited [http://www.etish.org]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^...^
/ o,o \ The proud parents of Useme & ORMF
|) ::: (| Open Requirements Management Framework
====w=w==== [http://www.eclipse.org/ormf/]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Re: Using UML Profiles with EMF [message #427229 is a reply to message #427227] Fri, 06 February 2009 18:49 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060702090701090601010701
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Joel,

Comments below.

Joel Rosi-Schwartz wrote:
> Hi Ed,
>
> Thanks for the clear reply.
>
> On point I would appreciate if you could clarify. You say:
>
> I tell them that instead they should decorate Ecore with EAnnotations.
>
> I you suggesting that ORMF also discourage adopters from extending our Core
> model?
>
In the UML newsgroup they often talk about light weight extension
(profiling/decorating) verses heavy weight extension (subclasses).

It's fine to allow people to subclass, but such subclasses are more
intimately tied to the core base class implementation and are hence more
prone to disruption if you make changes to the base class. I.e.,
typically if you add features to your base model, the derived model will
need to be regenerated and recompiled (though we actually have
generation flags that will generate a pattern that avoids this). See
the commentary in https://bugs.eclipse.org/bugs/show_bug.cgi?id=252501
as an example where implementation changes I need/want to make in Ecore
ends up being disruptive to clients.
> Cheers,
> Joel
>
> On 05/02/2009 14:00, in article gmereo$kfv$1@build.eclipse.org, "Ed Merks"
> <Ed.Merks@gmail.com> wrote:
>
>
>> Joel,
>>
>> UML profiles make sense to apply to UML instances, but Ecore doesn't
>> directly have such a concept and I suspect you might even be asking how
>> to make your own model extensible without other people literally
>> extending the classes in your model. You'll see I often tell people not
>> to extend Ecore (and that they often ignore me only to complain later).
>> I tell them that instead they should decorate Ecore with EAnnotations.
>> Often people notice how conveniently EModelElement already supports
>> EAnnotations and are tempted to extend it in their model; please don't.
>> One of the cool things about EAnnotations is that they can contain or
>> reference any other type of object, so they can be used to embed or
>> reference data from other independent models. So this is the Ecore
>> equivalent of a profile and these concepts could be reused in the design
>> of your own model. I.e., define a root class that all your other
>> classes extend (like EModelElement in Ecore), define an annotation class
>> (like Annotation) and use it on your root class. This will effectively
>> make all parts of your model annotatable...
>>
>>
>> Joel Rosi-Schwartz wrote:
>>
>>> Hi,
>>>
>>> As a part of our modelling efforts for ORMF the use or UML Profiles has been
>>> brought up as a possible strategy to enable adopters to extend our core
>>> model. Since the architectural decision to use EMF has already been made, I
>>> started researching how one goes about applying UML Profiles to an ecore
>>> model. So far am not encouraged from my initial Googling, checking the EMF &
>>> the DSL book and searches on the relevant EF newsgroups.
>>>
>>> So I would like to ask this forum for their collective wisdom. Is using UML
>>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>>> appreciate pointers to any relevant resources to better understand how to
>>> marry the two.
>>>
>>> Many thanks,
>>> Joel
>>>
>>>
>>>
>
>

--------------060702090701090601010701
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Joel,<br>
<br>
Comments below.<br>
<br>
Joel Rosi-Schwartz wrote:
<blockquote cite="mid:C5B23287.197B9%25Joel.Rosi-Schwartz@Etish.org"
type="cite">
<pre wrap="">Hi Ed,

Thanks for the clear reply.

On point I would appreciate if you could clarify. You say:

I tell them that instead they should decorate Ecore with EAnnotations.

I you suggesting that ORMF also discourage adopters from extending our Core
model?
</pre>
</blockquote>
In the UML newsgroup they often talk about light weight extension
(profiling/decorating) verses heavy weight extension (subclasses).<br>
<br>
It's fine to allow people to subclass, but such subclasses are more
intimately tied to the core base class implementation and are hence
more prone to disruption if you make changes to the base class.&nbsp; I.e.,
typically if you add features to your base model, the derived model
will need to be regenerated and recompiled (though we actually have
generation flags that will generate a pattern that avoids this).&nbsp; See
the commentary in <a
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252501">https://bugs.eclipse.org/bugs/show_bug.cgi?id=252501</a>
as an example where implementation changes I need/want to make in Ecore
ends up being disruptive to clients.<br>
<blockquote cite="mid:C5B23287.197B9%25Joel.Rosi-Schwartz@Etish.org"
type="cite">
<pre wrap="">
Cheers,
Joel

On 05/02/2009 14:00, in article <a class="moz-txt-link-abbreviated" href="mailto:gmereo$kfv$1@build.eclipse.org">gmereo$kfv$1@build.eclipse.org</a>, "Ed Merks"
<a class="moz-txt-link-rfc2396E" href="mailto:Ed.Merks@gmail.com">&lt;Ed.Merks@gmail.com&gt;</a> wrote:

</pre>
<blockquote type="cite">
<pre wrap="">Joel,

UML profiles make sense to apply to UML instances, but Ecore doesn't
directly have such a concept and I suspect you might even be asking how
to make your own model extensible without other people literally
extending the classes in your model. You'll see I often tell people not
to extend Ecore (and that they often ignore me only to complain later).
I tell them that instead they should decorate Ecore with EAnnotations.
Often people notice how conveniently EModelElement already supports
EAnnotations and are tempted to extend it in their model; please don't.
One of the cool things about EAnnotations is that they can contain or
reference any other type of object, so they can be used to embed or
reference data from other independent models. So this is the Ecore
equivalent of a profile and these concepts could be reused in the design
of your own model. I.e., define a root class that all your other
classes extend (like EModelElement in Ecore), define an annotation class
(like Annotation) and use it on your root class. This will effectively
make all parts of your model annotatable...


Joel Rosi-Schwartz wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Hi,

As a part of our modelling efforts for ORMF the use or UML Profiles has been
brought up as a possible strategy to enable adopters to extend our core
model. Since the architectural decision to use EMF has already been made, I
started researching how one goes about applying UML Profiles to an ecore
model. So far am not encouraged from my initial Googling, checking the EMF &amp;
the DSL book and searches on the relevant EF newsgroups.

So I would like to ask this forum for their collective wisdom. Is using UML
Profiles with EMF a good or bad idea. If it is a good idea, I would
appreciate pointers to any relevant resources to better understand how to
marry the two.

Many thanks,
Joel


</pre>
</blockquote>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>

--------------060702090701090601010701--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Using UML Profiles with EMF [message #427233 is a reply to message #427228] Fri, 06 February 2009 22:07 Go to previous messageGo to next message
Hossam Karim is currently offline Hossam KarimFriend
Messages: 26
Registered: July 2009
Junior Member
Yes, we had to write a full UML2Ecore transformation frist, next steps
were simply extensions and minor modifications to the base transformation
and domain model. We are using QVTo for this.


On Fri, 06 Feb 2009 20:34:48 +0200, Joel Rosi-Schwartz
<Joel.Rosi-Schwartz@etish.org> wrote:

> Hi Hossam,
>
> Thanks for sharing your experience and for the helpful diagram. Have you
> actually achieved all or part the of transformations that you indicate? I
> would be keen to follow your progress with this.
>
> All the best,
> Joel
>
>
> On 05/02/2009 22:17, in article op.uowf6zvihvsg55@hkarim, "Hossam Karim"
> <hossam.karim@gmail.com> wrote:
>
>> Hi Joel,
>> We are facing this typical scenario in one of our projects. We
>> started
>> by not listening to Ed?s advice and extended the Ecore metamodel. Now
>> that we realized we were wrong, we are investigating a different
>> approach.
>> A profile is an extension mechanism, and Ecore metamodel is basically
>> architected to be instantiated by creating your own models. So, if you
>> are
>> able to create an Ecore model that describes precisely your domain
>> model,
>> what maps a profile is an extension to your Ecore model. Please have a
>> look at the attached diagram.
>>
>>
>> Hossam Karim
>>
>>
>> On Thu, 05 Feb 2009 15:20:43 +0200, Joel Rosi-Schwartz
>> <Joel.Rosi-Schwartz@etish.org> wrote:
>>
>>> Hi,
>>>
>>> As a part of our modelling efforts for ORMF the use or UML Profiles has
>>> been
>>> brought up as a possible strategy to enable adopters to extend our core
>>> model. Since the architectural decision to use EMF has already been
>>> made, I
>>> started researching how one goes about applying UML Profiles to an
>>> ecore
>>> model. So far am not encouraged from my initial Googling, checking the
>>> EMF &
>>> the DSL book and searches on the relevant EF newsgroups.
>>>
>>> So I would like to ask this forum for their collective wisdom. Is using
>>> UML
>>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>>> appreciate pointers to any relevant resources to better understand how
>>> to
>>> marry the two.
>>>
>>> Many thanks,
>>> Joel
>>>
>>
>
Re: Using UML Profiles with EMF [message #427266 is a reply to message #427226] Mon, 09 February 2009 16:37 Go to previous message
Eclipse UserFriend
Originally posted by: cdamus.zeligsoft.com

Hi, Joel,

UML2 is an extension of EMF so, in that sense, UML Profiles work with
EMF. They are definitely an EMF-based implementation of the MOF Profile
concept, in any case.

Profiles do provide two significant benefits of modeling over
EAnnotations. One is that they are not referenced by the element that
they extend, so that the element is independent of its stereotypes.
Despite this, the UML2 API makes it easy to access the stereotypes in
the context of the base element. Of course, you can just use Ecore to
describe "stereotypes" that reference the extended element, but the
integration providing the reverse-lookup would have to be a custom
implementation.

The other benefit of stereotypes is that they fit nicely into OCL.
Because UML has associations, OCL can navigate from the base element to
its stereotypes very easily. This is not so easy with Ecore, so your
OCL constraints would have to use inverse-referencing operations that
you model explicitly in your Ecore model.

These on their own may not constitute compelling reasons to chosse UML
and Profiles over Ecore for your metamodelling. I guess it depends on
what integration you need with other technologies. In any case, UML2
does produce an Ecore representation of your metamodel anyway, so you
don't lose any options by taking that route.

HTH,

Christian


Joel Rosi-Schwartz wrote:
> Hi Christian,
>
> I am not clear from you post if you are suggesting a way to use Profiles in
> conjunction with EMF or if you are simply arguing that Profiles have
> features that are difficult to achieve with EMF. Would you care to clarify?
>
> Many thanks,
> Joel
>
> On 05/02/2009 14:00, in article gmerdl$kdj$1@build.eclipse.org, "Christian
> W. Damus" <cdamus@zeligsoft.com> wrote:
>
>> Hi, Joel,
>>
>> (including the UML2 newsgroup for their perspective)
>>
>> The MDT UML2 component has been quite successful with their
>> implementation of Profiles for UML. Also, it's possibly a little-known
>> fact, but the Profile mechanism is applicable to any UML-based
>> metamodel, not just the UML, itself. The UML2 run-time library supports
>> this in any generated metamodel.
>>
>> So, because Ecore can be described using UML (see the
>> Ecore.metamodel.uml resource in UML2), one can, in theory, generate
>> Ecore with profile support. :-D Of course, it's probably best to leave
>> Ecore to describe itself.
>>
>> In my own experience, the stereotype mechanism of Profiles offers a very
>> convenient extension facility which readily supports:
>>
>> - optionality: the base model element has no reference to the
>> stereotypes, so stereotypes don't even have to be loaded if
>> the application doesn't need them
>> - traceability: UML2 offers the implicit CacheAdapter instance that
>> facilitates the retrieval of stereotypes applied to an object
>> - transparency: languages such as OCL have built-in support for
>> stereotypes because they behave in every respect like additional
>> metaclasses
>> - type safety: stereotypes are more explicitly structured than
>> EAnnotations, and with UML2's static profile definition, can even
>> have behaviour of their own
>>
>> It's basically a clean implementation of the classic Adapter/Decorator
>> pattern, for models. Profiles in themselves are a good reason to use
>> UML2 and its code generation for your metamodels. Just define your
>> metamodel with support for stereotype extension, and any client
>> application can define domain-specific extensions to your metamodel
>> without the encumbrance of the tight coupling implied by metaclass
>> specialization.
>>
>> HTH,
>>
>> Christian
>>
>>
>> Joel Rosi-Schwartz wrote:
>>> Hi,
>>>
>>> As a part of our modelling efforts for ORMF the use or UML Profiles has been
>>> brought up as a possible strategy to enable adopters to extend our core
>>> model. Since the architectural decision to use EMF has already been made, I
>>> started researching how one goes about applying UML Profiles to an ecore
>>> model. So far am not encouraged from my initial Googling, checking the EMF &
>>> the DSL book and searches on the relevant EF newsgroups.
>>>
>>> So I would like to ask this forum for their collective wisdom. Is using UML
>>> Profiles with EMF a good or bad idea. If it is a good idea, I would
>>> appreciate pointers to any relevant resources to better understand how to
>>> marry the two.
>>>
>>> Many thanks,
>>> Joel
>>>
>
Previous Topic:Re: [Teneo] Problem with saving after deleting object referencing StringToXXXMap
Next Topic:behavior of EcoreUtil.copy
Goto Forum:
  


Current Time: Thu Apr 18 03:36:34 GMT 2024

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

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

Back to the top