Issue 19523: Actor association constraint makes UseCase subclass of Class (uml2-rtf) Source: (, ) Nature: Clarification Severity: Significant Summary: The constraint on Actors inv: Association.allInstances()->forAll( a | a.memberEnd->collect(type)->includes(self) implies ( a.memberEnd->size() = 2 and let actorEnd : Property = a.memberEnd->any(type = self) in actorEnd.opposite.class.oclIsKindOf(UseCase) or ( actorEnd.opposite.class.oclIsKindOf(Class) and not actorEnd.opposite.class.oclIsKindOf(Behavior)) ) ) uses the sub-expression actorEnd.opposite.class.oclIsKindOf(UseCase) where the actorEnd is a Property, whose opposite is a Property, whose class is a Class. So oclIsKindOf(UseCase) can never be true, as UseCase is a subclass of BehavioredClassifier, and not of Class. Resolution: Revised Text: Actions taken: July 16, 2014: received issue Discussion: End of Annotations:===== m: webmaster@omg.org Date: 16 Jul 2014 04:53:10 -0400 To: Subject: Issue/Bug Report ******************************************************************************* Name: Florian Schneider Employer: mailFrom: flo.schneider@gmail.com Terms_Agreement: I agree Specification: OMG Unified Modeling Language TM (OMG UML) Version 2.5 Section: 18/18.2 FormalNumber: ptc/2013-09-05 Version: 2.5 beta2 Doc_Year: 2013 Doc_Month: September Doc_Day: 05 Page: 678 Title: Actor association constraint makes UseCase subclass of Class Nature: Clarification Severity: Significant CODE: 3TMw8 B1: Report Issue Remote Name: extranet.linova.de Remote User: HTTP User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.77.4 (KHTML, like Gecko) Version/7.0.5 Safari/537.77.4 Time: 04:53 AM Description: The constraint on Actors inv: Association.allInstances()->forAll( a | a.memberEnd->collect(type)->includes(self) implies ( a.memberEnd->size() = 2 and let actorEnd : Property = a.memberEnd->any(type = self) in actorEnd.opposite.class.oclIsKindOf(UseCase) or ( actorEnd.opposite.class.oclIsKindOf(Class) and not actorEnd.opposite.class.oclIsKindOf(Behavior)) ) ) uses the sub-expression actorEnd.opposite.class.oclIsKindOf(UseCase) where the actorEnd is a Property, whose opposite is a Property, whose class is a Class. So oclIsKindOf(UseCase) can never be true, as UseCase is a subclass of BehavioredClassifier, and not of Class.