Issue 6873: UML 2 Super / state machines / non-existent return type (uml2-superstructure-ftf) Source: Simula Research Laboratory (Mr. Bran Selic, selic(at)acm.org) Nature: Uncategorized Issue Severity: Summary: The LCA operation, defined in section 15.3.12 (page 194) has a non-existent return type, CompositeState Resolution: see above Revised Text: Actions taken: December 31, 2003: received issue March 8, 2005: closed issue Discussion: In the context of the UML2.0 metamodel the LCA of two states shall be a model element which is either a state or the region, which is the least common container of the states in the statemachine containment hierarchy. Practically it can be either a region or an orthogonal states as these are the only statemachine model elements that contain more than a single element (regular states contain 0..1 region, and therefore won’t be LCAs) This implies the following corrections to the text: Constraint 4 on page 470 shall be modified to [4]All transitions incoming a join vertex must originate in different regions of an orthogonal state. (self.kind = #join) implies self.incoming->forAll (t1, t2 | t1<>t2 implies (self.stateMachine.LCA(t1.source, t2.source).isOrthogonal) Constraint 6 shall be modified to: [6] All transitions outgoing a fork vertex must target states in different regions of an orthogonal state. (self.kind = #fork) implies self.outgoing->forAll (t1, t2 | t1<>t2 implies (self.stateMachine.LCA(t1.target, t2.target).isOrthogonal) The additional operations section (p 491) shall be modified to specify the LCA function without the OCL definition, since lacking a common metamodel element for state and region makes the OCL specification of it too cumbersome to add any value. Therefore the ancestor operation on page 491 shall be removed, and the LCA operation will be defined as follows: [1] The operation LCA(s1,s2) returns the an orthogonal state or a region which is least common ancestor of states s1 and s2 based on the statemachine containment hierarchy. The paragraph Transition execution sequence shall be corrected on page 501 to the following: Every transition, except for internal and local transitions, causes exiting of a source state, and entering of the target state. These two states, which may be comp osite, are designated as the main source and the main target of a transition. The least common ancestor (LCA) of a (compound) transition is a region or an orthogonal state which is the LCA of the source and target states of the (compound) transition. The LCA operation is an operation defined for the statemachine class. If the LCA is a region, then the main source is a direct subvertex of the region which contains the source states, and the main target is a the subvertex of the region that contains the target states. In case where the LCA is an orthogonal state, the main source and main target are the orthogonal state itself. The reason is that transition crossing regions of an orthogonal state forces exit of the entire orthogonal state and reentering all of its regions. End of Annotations:===== ubject: UML 2 Super / state machines / non-existent return type X-Mailer: Lotus Notes Release 6.0.2CF1 June 9, 2003 From: Branislav Selic Date: Tue, 30 Dec 2003 09:44:49 -0500 X-MIMETrack: Serialize by Router on D25ML05/25/M/IBM(Release 6.0.2CF1|June 9, 2003) at 12/30/2003 09:44:51, Serialize complete at 12/30/2003 09:44:51 The LCA operation, defined in section 15.3.12 (page 194) has a non-existent return type, CompositeState. Bran Selic Distinguished Engineer IBM Rational Software