Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Difference betweeen constraints and Invariants(Scenarios where constraints/Invariants are used)
Difference betweeen constraints and Invariants [message #558456] Mon, 13 September 2010 05:54 Go to next message
manasa  is currently offline manasa Friend
Messages: 3
Registered: September 2010
Junior Member
Hi,

I am currently working on EMF Validation framework and specifically using constraints and invariants in the ecore.

I am not quite clear with the scenarios, where constraints are to be used and where invariants are to be used.

Going by the meaning of both, invariant is an assertion that should always be true, whereas constraint is a restriction, which can be true at a point and false at an other point.

Ex - In a case where i want to make sure, my website url does not have a "@" symbol, i created a constraint with this restriction, but i could also create an invariant with the same.

Is there any difference between using constraint and invariant in the above case?

Thanks in advance,
Manasa
Re: Difference betweeen constraints and Invariants [message #558467 is a reply to message #558456] Mon, 13 September 2010 07:15 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6450
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------080408090609020502050606
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Manasa,

Conceptually an invariant includes checks in the context of a single EObject (EClass), whereas constraints may span arbitrary sub graphs.

Technically, IIRC, an invariant is a method on an EClass (called by a validator) and a constraint is a method on a Validator.

Cheers
/Eike

Contact: http://www.esc-net.de Blogger <http://thegordian.blogspot.com>Twitter <http://twitter.com/eikestepper>Linkedin <http://de.linkedin.com/in/eikestepper>Xing <http://www.xing.com/profile/Eike_Stepper>
Article: What exactly is inside that p2 repository? < http://thegordian.blogspot.com/2010/05/what-exactly-is-insid e-that-p2.html>

I'm going to Eclipse Summit Europe 2010 <http://www.eclipsesummit.org/>



Am 13.09.2010 07:54, schrieb manasa:
> Hi,
>
> I am currently working on EMF Validation framework and specifically using constraints and invariants in the ecore.
>
> I am not quite clear with the scenarios, where constraints are to be used and where invariants are to be used.
>
> Going by the meaning of both, invariant is an assertion that should always be true, whereas constraint is a restriction, which can be true at a point and false at an other point.
>
> Ex - In a case where i want to make sure, my website url does not have a "@" symbol, i created a constraint with this restriction, but i could also create an invariant with the same.
>
> Is there any difference between using constraint and invariant in the above case?
>
> Thanks in advance,
> Manasa

--------------080408090609020502050606
Content-Type: multipart/related;
boundary="------------020500050705090001040804"


--------------020500050705090001040804
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
Hi Manasa,<br>
<br>
Conceptually an invariant includes checks in the context of a single
EObject (EClass), whereas constraints may span arbitrary sub graphs.<br>
<br>
Technically, IIRC, an invariant is a method on an EClass (called by
a validator) and a constraint is a method on a Validator.<br>
<br>
<!--WISESTAMP_SIG_95824_START--><span style="color: black;">
<div dir="ltr">
<div>Cheers<br>
/Eike<br>
<br>
</div>
<div style="padding: 5px 0pt; font-family: arial,sans-serif;
font-size: 13.3px;"><span style="color: gray;">Contact: <a
href="http://www.esc-net.de">http://www.esc-net.de</a></span>
<a href="http://thegordian.blogspot.com" style="padding: 0pt
2px; color: blue; font-size: 10pt;" _service=""><img
src="cid:part1.08080106.00060703@esc-net.de" alt="Blogger"
style="vertical-align: middle; padding-bottom: 5px;"
border="0" height="16" width="16"></a><a
href="http://twitter.com/eikestepper" style="padding: 0pt
2px; color: blue; font-size: 10pt;" _service=""><img
src="cid:part2.08050701.01050702@esc-net.de" alt="Twitter"
style="vertical-align: middle; padding-bottom: 5px;"
border="0" height="16" width="16"></a><a
href="http://de.linkedin.com/in/eikestepper" style="padding:
0pt 2px; color: blue; font-size: 10pt;" _service=""><img
src="cid:part3.09080901.05050205@esc-net.de"
alt="Linkedin" style="vertical-align: middle;
padding-bottom: 5px;" border="0" height="16" width="16"></a><a
href="http://www.xing.com/profile/Eike_Stepper"
style="padding: 0pt 2px; color: blue; font-size: 10pt;"
_service=""><img
src="cid:part4.07090903.04030400@esc-net.de" alt="Xing"
style="vertical-align: middle; padding-bottom: 5px;"
border="0" height="16" width="16"></a></div>
<div style="color: gray; font-size: 13.3px; padding-bottom:
5px;">Article: <span style="color: blue; text-decoration:
underline;"><a
href=" http://thegordian.blogspot.com/2010/05/what-exactly-is-insid e-that-p2.html"
undefined="">What exactly is inside that p2 repository?</a></span></div>
<div><br>
<a href="http://www.eclipsesummit.org/"><img
src="cid:part5.05070405.02010607@esc-net.de" alt="I'm
going to Eclipse Summit Europe 2010" border="0"
height="100" width="130"></a>
<br>
<br>
</div>
</div>
</span><!--WISESTAMP_SIG_95824_END--><br>
<br>
Am 13.09.2010 07:54, schrieb manasa:
<blockquote cite="mid:i6kebg$7uu$1@build.eclipse.org" type="cite">Hi,
<br>
<br>
I am currently working on EMF Validation framework and
specifically using constraints and invariants in the ecore.
<br>
<br>
I am not quite clear with the scenarios, where constraints are to
be used and where invariants are to be used.
<br>
<br>
Going by the meaning of both, invariant is an assertion that
should always be true, whereas constraint is a restriction, which
can be true at a point and false at an other point.
<br>
<br>
Ex - In a case where i want to make sure, my website url does not
have a "@" symbol, i created a constraint with this restriction,
but i could also create an invariant with the same.
<br>
<br>
Is there any difference between using constraint and invariant in
the above case?
<br>
<br>
Thanks in advance,
<br>
Manasa
<br>
</blockquote>
</body>
</html>

--------------020500050705090001040804
Content-Type: image/png;
name="blogger.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.08080106.00060703@esc-net.de>
Content-Disposition: inline;
filename="blogger.png"

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/I NwWK6QAAABl0
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADkUExURf9xEv9m AP////9lAP+Q
SP9kAP9jAP9fAP9nAf9vD//x5/9hAP/iz/9iAP9eAP/s4P9vEP9yEv9qAP9q B/+LRP+we/90
I/+RSP/z6/+jZv/y6P+8kP/59f5yE//awf/Ttv9hAf9nAv/17v+4if9sC/9o BP+bWP/r3v/k
0v+wfP+QRv/o2f9gAP+OQ/93HP/l0/+0gv/Rsv/9/P/j0P+pcP+0hf/dx//D m//+/v+td/9o
AP+NQv/Yvf+zgv/x6P/q2/9xG//p2f9pAP/s3//8+fxxE//ex/+AK/9oCP/j 0f/Uuv///4Xw
StcAAABMdFJOU/////////////////////////////////////////////// ////////////
/////////////////////////////////////////wCejeTMAAAAsklEQVR4 2kSP1w6DMBAE
7cMGQg0hvffee++d//+f2IaIeTlppNXtIo88UAjxEIlhjCUG5lwJQuwoulqh FuUGcWGSiTF7
bt40EEoXBKtyIPQS5PffFqyHlhCS2obTK5kDmJ8lXxgA0zsPXer0L3zSUVmI D9ip3SC+hKwQ
2CxCtXYYL25gu1S8bf4jib5fTM+MNE079jom/+KwJUojwnAVifcQ46jM4M23 BHmkEK53iPcT
YACE/Q4KzoVQVwAAAABJRU5ErkJggg==
--------------020500050705090001040804
Content-Type: image/png;
name="twitter.png"
Content-Transfer-Encoding: base64
Content-ID: <part2.08050701.01050702@esc-net.de>
Content-Disposition: inline;
filename="twitter.png"

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/ AP+gvaeTAAAA
CXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAABxUlE QVQ4y4WTMW4U
QRBFX3X3zoy8FgZphTCYAEg4gAPEYbgBJEgEXIALkHMfAjIwItnAAfLK2JYB r3dmuj7BzI5m
2WBLqqzq//q/fxt9NTmrzo7MCIhgRpWSsaMSgEta5czcjYtWTKPxfALZXTEE 2wmAxLXD11VL
BZy2MAuJB/iuA3oAoJb4lUUCVkAGTM5t06gjATMjBiPFaFsADvx1MTFoBd/q zHkMeLcLgCEe
JqjbrCJ1IAkghGDz20Z/XEzMMMTnZTsSYANMAl7fq7YlZOBaUCCk4WowwyRA mBmL7CxcmwDu
rh+rzKU71YhQ/dnr8VbiaRF4MgmbAAZkxJU7lRk3Wby5W3FcJlbSICAjZjFS jJ42rSXWgoWL
fYPfLvaCMTVxJ0XoJTmQ/stF6GPABDhzcepi7uJ74yQDuXcDErjjGhkwNvHx xCjMOMkCg3eX
S85zyVEMtGt24GWVxvsM5yi3+nBV8/7iBmJv0gaZQMZhNL4cHXBYdDkY7HQL vD0oebVfQuud
a8FGHSAaP1vnpMmbHgDEECwafLq/x8fZlGfJKCVKiapvXLyoEsdl3JYwBMpd uW1YEjlz4aMh
AY+iURiU/Vf/B6EE4kjfs5YLAAAAAElFTkSuQmCC
--------------020500050705090001040804
Content-Type: image/png;
name="linkedin.png"
Content-Transfer-Encoding: base64
Content-ID: <part3.09080901.05050205@esc-net.de>
Content-Disposition: inline;
filename="linkedin.png"

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/ AP+gvaeTAAAA
CXBIWXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAQAAAAEABcxq3DAAACGklE QVQ4y6WTO2sU
URTHf3dmdp0kTnZJzErSrPjKYqNY2GljodhoLRLB1sLCD2DrZxAsfCAE/AaC grY+SBQSFTSC
xizGzZ3MTiYz92UxY5KNYuOBP+eew/3/73lwxfWHT9yjuR8YL0CwyxygAAPo Cqr0ntFcvjBB
cH++x8WzJzm8v/EnWVdks0PEgNWO95/XePD4HZ4ADk6MAhD6Hs26/08yBjwr ODrZBK0JADyv
LP7GsX2Evse9xR5Lsvgr+XfsO7ctoKwj9AWh7wEQIFCF+3sFGjCmgiJwQFwY Yge3X3cZrwXM
r2SDg9tJ1rokaw1alRXI3NAO61w60AAHTkE7qtNu1PjSUywsb3L60AgjNcHz hZgXb39WApoA
C3FqsIGjMxYC8OZbxlQU0GmFTLdCznWireV0pobYSDKevuzilMZDg0wN/cxu XdrMLVqX53TT
cu3OJ87cmmdlrQBgemoYKTMwqhSI+4Z0QMBhjANgcTnj1UdJHGd8Xc0AmBit Ecu0moGGODH0
h7cF8tyidSmgjSWWG6AUWpkypw1xLwXA4z8tQINcN/T3moEWtLZbr0mZQV5s 55RFJuU8RHR1
1iWtIzQ8nxOtIVCw9D2lWbM06w4ZZ8wtrEJRcLw9TDMUyKRg7kOPSHQR0ZVZ lyRjMDkOOVAU
FfLS57viHRaJLsHM+THuPtuDUgLTW2U0X672t47rrw82vOu/z9w8xS+MkDzV Boy6+QAAAABJ
RU5ErkJggg==
--------------020500050705090001040804
Content-Type: image/png;
name="xing.png"
Content-Transfer-Encoding: base64
Content-ID: <part4.07090903.04030400@esc-net.de>
Content-Disposition: inline;
filename="xing.png"

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsT AAALEwEAmpwY
AAABsklEQVR42mP8//8/AymAEb+G1x9333hU9fffZy52ZTONrQQ0/P7z7sLd hJfvN7Mw80mL
ROkqTodqAIKvv379+fuXhZmZh50dpv7f49dLLt1LYWD4ryRZCETsrJIIDYdu 3y5fu16AizPE
0CTFzgoo8fPXoxPX/T9/v8DHbWCito6LXRHFDw/evnXpm3D39Ws1Eck9xVmy wqLP3/SevlXC
ysKtLtuoJFmMxdObL17ymzqN8S9LnZddua/VrUcWD149FRNwNFFby8oiiEXD itNnImfN5WTi
nBhu7Gvw5OLdiv+MQnqKU6WEI7AE6+vPnx17+68+fmGrJL0wRe/rl/jbL94r isfqKs1kZuJE
1/Dt16/27TtatmzjYeZcnuZpqnDi3J16FmZxYDhKCAViibiVp8+Ur1v39N0H X12DFRkJ33/u
O3LVk+E/i5xYqq7iNCwaXn769PLTZ0ZGBnFePjE+3j9/3155kPvk9XIudgV9 5XnCfI6Ek8a7
T4dO3vD4+++HlHC4kepywhr+/P0ITEIPXk5jZxXTVpgE1EY48X36euHs7fBv P+8CVespzYGH
FSOpyRsAAuDh4a3m5z0AAAAASUVORK5CYII=
--------------020500050705090001040804
Content-Type: image/gif;
name="130x100_going.gif"
Content-Transfer-Encoding: base64
Content-ID: <part5.05070405.02010607@esc-net.de>
Content-Disposition: inline;
filename="130x100_going.gif"

R0lGODlhggBkANU/AAI6m5unzAFEnevmBBdYp26MwSdhrezv9ShbpkdJl8zT 5iosTk5RczdZ
pUxws4+Vujlhq296sauxNTZpsY6cUjtLl0pBjWmLbMzM3yVUngxDnzQ/j1B0 fjRTnm1skRRN
oxsaNCVKlb3I30JPnEY+iQVRojY+ZzhskyVDhEdbok5DlIh+smNfLmNYlS5l r1dSmztQhUZa
iV1eg93b6MTJIx5eq0xMfdvh7UJAaGtipL24E7W50CtOm4CAWP///////yH5 BAEAAD8ALAAA
AACCAGQAAAb/wJ9wOLwVPoCkcslsOp/QqHRKrX4KN6J2K1RkqmCpZqwJm8/h jIi7PUDQ6DJ5
Dq/bmZADWzgrA/x/UXODhGR/hYViSoB3jRozbApJiJSVlpeGTH6DjZ1KCm2T mKOkcyGnIaVj
nncCSXpESKqzlai2qKSscAKGH0QBh7QaJ7QoY6c8PB3Lyzy4l7pVAtPTnAFD wmMfIRIcGbMo
yB0NDSnm5B3OqBvsKO7vZa7RT9TUiEIPwZcZ32QcNANocPhA8EOGDgUTEtQW okKFcSkcSJQI
oVyKFi1e2MBhomPHBSBNoJiXZBqAevYQAbj2BZNBChcyfCBDYYCEhBk4SOCn MCGy/xHmHEQY
SjTCihw5ZGzEwdEjyKcLRupCibJQQQ0ZfuirlKHmAAoyCV44EbPgBYASTvQs GEJZuRwRCjyY
S3eFBxkyGCz1aAIq1JN1qAq2mrCMVlIcAqpdWzADwIGMt/EoJ3TFgwA7Mgd4 YBevXqZ8/UJF
QZWJ4NODCSlcJQnRWg6wIUc+wSHGBVQ920IUelnEDAUiNtu9+7npR9FPSaNe vnxQ5FXAtEWe
Tp0tboK6G0iUu2PGjRsYhHsgvtcp8uTM01eVPn1VAQDTM1yoTr/2LbfbA/i+ MWOHePKgmSca
COipl54G9M3kHnyMcUABDWMluBZZNFDAgTrZQSAUZhhgIP/CDnMNl1d5CzCA wQN+MeABDk9p
YCBq7FU3hivvRfaPTYtJWBABCHh1AQHbNFQBUA6sEABm/oU4nmckMuDDDgSC BEIAPqwQpXIv
olQCggm6aFKNjBEggQQU6PgBAWimecGYCKBpEA9DRmTZkSGuEMGSxTVV4pNR giTDAwyAEKWX
WQpQQglrpQlkYfUAAOZaCJxAAAeL0qdompKeICma/ByUQg4rWBZqqEvaYINe fTnlJJRQCeoq
SFgKsBBqiH5Qq0JpIoBAWASh5CiDCV0qLJCX7jjssQRkUIACBxwwwwPjRXvX nzM0i8EKfYG0
ap8gyLBDoAQSWMARWBwgggOETkP/wAM3HHDDDg4Ei6YDOzQ7QwFh+foesgTU UAMC/+oqsMAG
FGzwwQgb7MKuOzz5QL1V2iDDkjJg4MMBmR3ggwcLdLRtSAs8sHGfC8zgQ7si iOCDDxEgqI3K
IAZwgw8phNBpBg64O1fDO6SiLwCXBmwABAW7YLQLEySt9NITTOT00xNBQGUE KHQkg7s2xDCx
t09mawK0JtgAgwdPdmzq1xt3zBQOJgcAgzseNPv2KQWw/A4KEcSAQjI8pGBu B++ITHW6jmpw
7AkU/Ovv4jXwi6y/FvJ4QABVm0CCCVQysABTDLi7QJSvgoQDn6Cv4IMMrgqq wA1vvzM1CrbW
TXU4yPCQ/wGaEdB8dwgYh9NoAYan6a8BZ9nEAdJMJw318hNFIEFAFNQdHmYf muyBCTHEYPoO
apsqtqljlx22DWhzPD7bB8BgAgxv1/2ACafk7kMAeb/NfgXJNHwknSIrEA6h hRuWCwBCAQP8
K2EF0xXjFsgpfiRmADFwwMk6NIMKzgADgQIJ2R5AshTx6SkgMB3qwgWCas2t BAKAgA8eEI5D
OWBmK1NABDqFpoYpQAEdSllw3AFA4ClqcYi7wAWOlrwiLk0iSatIBy5AAQvl DkVhe4FGPIID
GOQuAN2LgffEJgPx4YB8IvMACEzQFBPS7gO5WwHtTjG2h63MAW3Jnw/0BgNU vP/DZ18KHpoW
V7AaHO2PyDOiIJXmggw0wAcK6IgNMNICr5mgczMISYCa8rGPhJFk3pkbQajk AdrtKgTvyN0O
9sYP2aGgjqdwxyl6qMd+MQ5hgIylLGdpAH407H02QIoHVsAAvqjMSk8ZT8f2 xKqniBCT6TNG
CSaASFV+wAEICBLe5kfKDKjwBnoLga0yQAzC+XCPw1MYEQfJPAcoDYnMSIEC EEk9jcngfAww
2Yl2MDNscaSL3FNb+Qj0kXW+Sz8XS4EqQ9AwETygAFQ6QAzWl4wQyI9+EaDS A2ZEjQCCc4EG
4AACN3qwBdbgBAb8VwZ4AAOZrcxZKPILDgKgsZOhKEr/bOMg6DwwA3C5CgMY a+kOBHoKWyGA
pSfdKfs6ALBkOUBlJw2AQG1V0W969KNr4gBIOUrVj+pkLLsaKSjDhpGNIIef fRGUX0InpdQJ
SgTpg0H2BmqrEhAgBGrNHvtg0IEMFPWtIcheDFrXwqYa7qk1KJ5AqErYEzxv ABfQFT94sIGO
kMAGL2gBiwZk1rF20KwgQAFa+YqbQ7mVH2wcqgIbxylQ3lGbv9MAYGtgABpU iLCwvUBAALYr
OG2ABLhFClIme57eWjZ1H2CWJgviWUXdTGCLS9NaDpXa1ZKFLLAl7FikioBk OKQCG6iABVow
qkb69rtldRXsMPO2tnr2UD9c/62izsteFNJItatlbXSjW9vr4u+6CRjVCmwA 3u+alSAZgKs2
2+tW4ak3TQT2bB7jK1+DXUCjsIVuAg/SDL51gAM96IEMXjCqFfX3PGYNQZoC LOLbsdfAB0ZT
gpn7XgYbDHGuHcvBXDDjNVXoBBS2q8AyEAOAAGQAGx5VDnj74fAKCgX8UJRB bHLii/IxpKRV
8YpRWDgGD88FPqKxg7VcMNl+ZRm6Mphia9KDEciAAjKwAIdDNWTwivVzZkVB VqOMJpigl0zp
TfGUD1VlF3d5TBDO6INgomXDwgSBAnteDGxrARXYoImhyjALQMKCHuCgBxKY NAsk0AM4g4AF
k+6Bhf8QgOECqokDJahBTSBEKVfqecrvdfVqCwZSF0zVAIYNSKA1heuN6qom OojBBixAbBnY
BFTPowBInvfjAehgANDWgaue3ezD2gRNJ2DyCX5cIRQDFsFT7rOVG4wwCoyJ y7DVVQcOSwEb
OMTYElDBC2pCgRzY4Hk6WAALoD3pZ4v1eRJYIrQ5gABoNy7bEjgUwoUV3/Wu OIDjJvfBQDoB
dKdbVz2AtgRiUAF4q8ACGa93Dp7Hgk/bRFDPxsEGRqBoUiO2YAAx4MJLgPAC e9ujDk+wRcc9
355/MgbJ7rhNiJ3xHsj7eTIggbEpcNtnx2AZzyNqYiAc849emwA1t7mTnwr/ bgJDnOc9py/f
YmATHsD7tmRWgQqQrgIPfCUBLIcg1Acg9QFodIADkPnVaz4sBnedvV+3ctij WxtdJYYCZne2
DTI+gB4kIAFIT4DbKTCk541gHM9rQEa/YgC8610CBw/I4xr+dz5/U9azHjxH O4CWwy563dAO
SOMrD+QKTH5IAFlGAwDSABccvvNVR7i/EOBjChzL76W36Naf2kfVI2wZDmoi VvkRgwzLoPoy
GJIMylwB7EP/AkQl9fFsbaEuX8CAxOMAEJvY6uOTngDnVb4rUf9K5yPsIAhI mMCSwYz++9//
AxNLCUNnjOM4y8dA4CZ/gmd/BoN/vlZdRPV/zEAO/xTYAATTeYCEQARYgAaI fGgifwcYTgxo
AAhAVFRVggODABW4ghaYfxg4S0aDMHSGeo5jZWmiAacXgvXnfCVIWAuDAFw2 MBQIAUQIg7Qk
g0HDWv7SgX6Hg63kZ/bXg1RFY0BohLJUcVZ4NAMYZeGUXKNXf4zjhHkGWAwo hbBUNEaTf7M0
SFiYhRbXR1xIbkv4hXJYA2I4hh4VhS6IQBm4hmzohjHIURhlMHPofjt4hzeX h6q3hxwVgzDI
hoR0hRkoiDsIhzOYiP6CiJg4iPPFiAkDiJAYiYC0NH8UdloIZYa4OJqog09G Xz6YhaEoioHE
NKXYc6cIZTPoUasIdrDlAP8B4ACN+Ijk9IuxSIuB+IYvKE63iIC6mIOsKIIb RSUGUDcFwIew
KEjUWIy06AC3CEtWSIjxtYrPKHEII43MNAHBeIXauI4TcEPd6I3faInN2Ep7 RH/DF2YcJY0G
oAAFc0NUYgTNUgCxBFQqUwBNg1TnMgHZSCUsdQAGOQENYy4+wDRUsjJGA1Q3 AIzK+EfGiG7z
mIqKg1yeeDD6aDDrdCQnUwAHoACAVDcBMAFUYpBoJRHmopA+YJBUIgIqqQAw eZNHNZFM444u
IDIyeQCfyJEd6ZGq6IyJmIIiyYgl2Y/8SI0uIJRHQyVJk43zkzRYuZA+YE43 1I482ZPJE5ZV
yY//03iT1mg0yVOLJAgwdsiUaAKXCuSUdqkrUbmPU3mTZwlIWGmTBrmVZOmV SROWYUmWQcmT
fZmW1biWs5g0bqlA4sgpPHKXlvlTPpCCN8SYetmSPmBQM1OUQlGThCmWPXkk GlOWByARRDkB
aDWFSAmZk6griHg7yXJcl2mXVKKZCoAA1NiZR0OEERmTB7kyCUmYEBCWDrBO CtAwyfMAGiOQ
GKmRb3mBaMiWEwABSQQBp4gATngz4BmeuTmedkmE5gkBBeAAEFAv2UmERaSd 53meBaAhwCFI
50kwl3mdLmCe7VmEP/id4Rmg/ECeBKor8QkBaOVSB7qgC7qcxjmf8Lk0/+fZ guRZMNzJoOZJ
m8AjoBwKngWagiyIoSI6oiQ6oRRKoCUKAQDaoQKqWOTJgjCaojI6o+TwoQhA ouSwoizKoiDq
iwVADpsBoxU4o0ToAOOinkNIpBQIZimIUNAEog0gojkKPKewo50iPyvjAxLY AC5JDogkpEma
og0QAS11kyEqpg3ADDomMDEpME86pAs6pQBwC20xUrZzp3cqSkSxpV3aAQUQ AWAqpPHJgioT
AejpADFaoujQf0tqpBDAD18aqCuIg3N6H3xzqXxzRf6nkivzAH46P8uASMtw khfzAOQAnZ1K
DmRaqiy4TjtQgV0ak+j5mRqTGRejnsk5P6WqMf8BAKQs0wHrtDLjIKlySqdx hKmZyk700wES
5JB/2gGa2gGiCqwXk1ApcEjO+qMNEJAzc62welLaGqs3mQJ18yQacwMqo1Tq dDJIBVRpOjXM
ejIRMIGSSqnGiqyXmjs3cEOeKlH9F63Tuk4p0AENM6/naqpcejHMYqYryKlm Kq4/Wjc7tU5G
Oj/mILCauk7LAK/SqgCMWq/vYazHiqzRurE3+a+g2rGjqqUdAK8pgJFjqqy/ iA4VmAI2lLC9
GpM4u67karHrCq2gqrEt+6sq+39gaq8ie6z2dUVL6wMzEBQVwLRFu04R4DcH MLARABQao7UH
kLUOkAIjELZhm7VA8Zn/I5A7BhWdOyuwLnmxWpqxLMuxtzqw/he2FmEOKWCv a4QK9tW3WLoy
EVABDbMyARC18+MQiBS269RSDxC2WTo/YYuqgCu2iruSGpO1frMyJlO1bcu2 PrtOZxu0cUu0
wTqv/Ue5qEupKMAOrJtdDuG69nW2RZECDpECQ1G7EZADDjEUI1ABGJsDYmu7 uUu5wgu8qBtR
R+IAwRsBElG1QMG8tlsA5lAAOWAOvGu7DhC1ZCsUtLu7gRu7qEu5lNq65MsO fXu+6Ju+1wW6
4du+7vu+8Bu2eDu/YIu61xW+6Ru/41u+5au+/tu3Ysu7YTsk8VvABhy+eHvA A6y+77u//Eu+
/9hlvv9rX49XwRZ8wY8XtnCnwO0rwJTrwe9ru8Zrv//bvg78wA+cvo/LMhjc wi7cwhpsweFL
pszStWGbA86ykgFMtWK7ApYbAO2bAOmbweF7wijcv337eE5LFC/wwk78xE/c xI9nLoorAiPw
ApMTthxWJSOQAFgcAAmQOxHgxBUAxQmgAcBwxKyLW2yMW8T2xhaQAD6AARds MUpMxwlgMVOT
AKg6OY+HthqDAVJckYL8wjMgAl68Qo/XHRVsOivweKaTA1MMxmbsxACwAwDA xrfFDm3cyZ5M
AnB8MpvxAHFsx3KMxxZzAwGAFE67AirzAGG8Mt0xPwnAkAzpwoITy/9jXMs+ 0MhV8nhUUsEd
UsmWfAMacFufnMxtbAFsTGwX0yEBQGwWE8dznAAWYDEvQGxU8sgvUM1XlAA5 UM0W0yHVjMHQ
+ci6DMy9DMm/zMvCjMfEjMEVoAE/4AAooMz43MnOjAFwfM0+oGZzLM3/rM0s 83FzrAJXpHbi
PD90onYW/AAzIMmP182wnACMzM7oHMkqkAB+XMlqt9GPt9Eb4AA/IAKZnM8o vc/9bDGuHND+
/MZo+wIMaQExzZAqQCU7oHY58NFqZzoPMBQ7rQIe4sWT89GOrHZfrALhHAE8 3dRO/dQqAABr
8AMdgMwojc8WsMKkLDJO69LT/MaD67TZnDv/LTUDLyBvFrMyGNDUFanWOp3D a23UVWLUB4BT
AQDVeO3UG9AAQyAJV+3JzAzKxFYUEdACxAYXNJ0Dhx0B/dwCuQvT8wMXTQ0X TJ3XTX0Uli1v
mJ3Zlg0AoDAEVPPXydzPpF3apg3HT9RonL3arN3aTo03W9AAVi3a+nzatm3a L1DYcOzavN3b
T70BKcAFWnrPtL3Mt33cyK3avr3crL0B0roHDgAAs+3GgU3dyX3dt83c2r3a GwAAJL0HQrAD
ZWDV2F3e173d6I3XGzAGOwDeWvAAPJAEq6vG9F3f9n3f+J3frWsMAMADD+De bHAAP02sBF7g
Bn7gCH7gEQCd7h0EADs=
--------------020500050705090001040804--

--------------080408090609020502050606--


Re: Difference betweeen constraints and Invariants [message #558539 is a reply to message #558467] Mon, 13 September 2010 12:25 Go to previous messageGo to next message
Hallvard Traetteberg is currently offline Hallvard TraettebergFriend
Messages: 671
Registered: July 2009
Location: Trondheim, Norway
Senior Member
On 13.09.10 09.15, Eike Stepper wrote:
> Hi Manasa,
>
> Conceptually an invariant includes checks in the context of a single
> EObject (EClass), whereas constraints may span arbitrary sub graphs.
>
> Technically, IIRC, an invariant is a method on an EClass (called by a
> validator) and a constraint is a method on a Validator.

Invariants and constraints are specified in different ways. A constraint
is an annotation on an EClass, while the other is an EOperation with a
special signature and annotation. See
http://wiki.eclipse.org/EMF/New_and_Noteworthy/Helios#Defini ng_the_Behavior_of_an_Invariant

Hallvard
Re: Difference betweeen constraints and Invariants [message #558548 is a reply to message #558539] Mon, 13 September 2010 12:59 Go to previous messageGo to next message
manasa  is currently offline manasa Friend
Messages: 3
Registered: September 2010
Junior Member
Ok. Invariants and constraints have are different with respect to their implementations.

But could invariants be used in scenarios where constraints could be used, or vice versa?

To my knowledge, for the scenario i had mentioned in my question above, where i want to validate the name of a website, i figured that i could use a constraint or a invariant for the same.

Hence was not sure where specifically invariants are to be used.

Regards,
Manasa

Re: Difference betweeen constraints and Invariants [message #558559 is a reply to message #558548] Mon, 13 September 2010 13:45 Go to previous messageGo to next message
Hallvard Traetteberg is currently offline Hallvard TraettebergFriend
Messages: 671
Registered: July 2009
Location: Trondheim, Norway
Senior Member
On 13.09.10 14.59, manasa wrote:
> Ok. Invariants and constraints have are different with respect to their
> implementations.
>
> But could invariants be used in scenarios where constraints could be
> used, or vice versa?

It's more a matter of style than semantics. Invariants are typically
used for hard constraints that must always be true, whereas constraints
are often violated temporarily during updates and should be true when
you're considered finished, e.g. when saving or committing to a
repository. I would expect a system to (more) eagerly evaluate
invariants, like in GMF-based editors that differentiate between live
and batch validation, so these should be reserved for quick checks.

> To my knowledge, for the scenario i had mentioned in my question above,
> where i want to validate the name of a website, i figured that i could
> use a constraint or a invariant for the same.

Technically, yes, but it sounds like an invariant to me.

Hallvard
Re: Difference betweeen constraints and Invariants [message #558570 is a reply to message #558456] Mon, 13 September 2010 14:14 Go to previous message
Ed Willink is currently offline Ed WillinkFriend
Messages: 6510
Registered: July 2009
Senior Member
Hi Manasa

I tried to get to the bottom of this for
http://wiki.eclipse.org/MDT/OCLinEcore

The different terminologies in use for Ecore and OCL can lread to
considerable confusion.

I think the answer to your question is that one appears in the API; i.e.
it is a public operation that you can invoke yourself, while the other
is only invokable as part of a validation.

Regards

Ed Willink

On 13/09/2010 06:54, manasa wrote:
> Hi,
>
> I am currently working on EMF Validation framework and specifically
> using constraints and invariants in the ecore.
>
> I am not quite clear with the scenarios, where constraints are to be
> used and where invariants are to be used.
>
> Going by the meaning of both, invariant is an assertion that should
> always be true, whereas constraint is a restriction, which can be true
> at a point and false at an other point.
>
> Ex - In a case where i want to make sure, my website url does not have a
> "@" symbol, i created a constraint with this restriction, but i could
> also create an invariant with the same.
>
> Is there any difference between using constraint and invariant in the
> above case?
>
> Thanks in advance,
> Manasa
Previous Topic:Using EMF in a standalone application / Birt Project - IncompatibleClassChangeError
Next Topic:Using EMF with others OSGi
Goto Forum:
  


Current Time: Wed Nov 13 18:01:01 GMT 2019

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

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

Back to the top