Legacy Issue Number: 18254
Source: Model Driven Solutions ( Ed Willink)
OCL 12.10 awaits alignment with the UML 2.0 metamodel.
Consequently, the relationship between a result-valued OCL bodyExpression and a Boolean-valued UML bodyCondition is unspecified. A common pragmatic resolution has been to equate the two and ignore the Boolean-valued requirement of a UML Constraint.
In order to accommodate prevailing practice and also support UML's multiple out/inouts, suggest:
Reinterpret the grammar
prePostOrBodyDeclCS ::= ‘body’ (simpleNameCS)? ‘:’ OclExpressionCS
the simpleNameCS is the name of the return parameter with 'result' as the anonymous default
OclExpressionCS is a result-valued bodyExpression if OclExpressionCS does not reference the simpleNameCS or its defgault.
OclExpressionCS is a Boolean-valued bodyCondition if the return parameter is referenced.
[Allow multiple body declarations.]
"body: ..." is a shortform of "body result: ..." which is a shortform for "body result: result = ..."
body A: ...
body B: ...
could be the specification of a UML operation
f(out a : A, inout b : B, in c : C) : Z
Reported: OCL 2.3.1 — Fri, 9 Nov 2012 05:00 GMT
Updated: Thu, 8 Oct 2015 14:12 GMT