Issue 19528: AcceptEventActionActivation::match should match instances of descendants of a trigger's signal (fuml-rtf) Source: Model Driven Solutions (Mr. Ed Seidewitz, ed-s(at)modeldriven.com) Nature: Uncategorized Issue Severity: Summary: Specification: Semantics of a Foundational Subset for Executable UML Models (FUML), v1.1 (formal-13-08-06) Subclause: 8.6.4.2.1 AcceptEventActionActivation The AcceptEventActionActivation::match operation should not require equality of Signals to match a signal instance to the Signal of a trigger of the AcceptEventAction. Rather, it should allow the Signal of the signal instance to be a descendant of the Signal of a trigger SignalEvent. Resolution: Change AcceptEventActionActivation::match The UML 2.4.1 specification is not explicit on how the receipt of a signal is matched to a signal event. The UML 2.5 specification, however, in 13.3.3, states that "A SignalEvent is a MessageEvent for messages requesting the reception of an instance of a specific Signal." Since an instance of a specialization of a signal is also an instance of the general signal, the statement in the UML 2.5 specification supports the view that the intent is that instances of specialized signals also match a signal event for the general signal. Revised Text: In 8.6.2.1, Figure 8.31, and in the normative XMI, add the following operation to class ActionActivation: checkAllParents( type : Classifier, classifier : Classifier) : Boolean In 8.6.2.2.1 ActionActivation, after operation addPinActivation, add the following operation and renumber subsequent operations appropriately: [3] checkAllParents ( in type : Classifier, in classifier : Classifier ) : Boolean // Check if the given classifier matches any of the direct or indirect // ancestors of a given type. ClassifierList directParents = type.general; boolean matched = false; int i = 1; while (!matched & i <= directParents.size()) { Classifier directParent = directParents.getValue(i - 1); if (directParent == classifier) { matched = true; } else { matched = this.checkAllParents(directParent, classifier); } i = i + 1; } return matched; In 8.6.4.1, Figure 8.35, and in the normative XMI, remove operation checkAllParents from class ReadIsClassifiedObjectActionActivation. In 8.6.4.2.4 ReadIsClassifiedObjectActionActivation, remove operation [1] checkAllParents and renumber subsequent operations appropriately. In 8.6.4.2.1 AcceptEventActionActivation, in operation match, replace the statement matches = ((SignalEvent)(triggers.getValue(i-1).event)).signal == signal; with Signal triggerSignal = ((SignalEvent) (triggers.getValue(i - 1).event)).signal; if (triggerSignal == signal) { matches = true; } else { matches = this.checkAllParents(signal, triggerSignal); } Actions taken: July 18, 2014: received issue October 8, 2015: Resolved December 22, 2015: closed issue Discussion: End of Annotations:===== m: Ed Seidewitz To: "issues@omg.org" Subject: AcceptEventActionActivation::match should match instances of descendants of a trigger's signal Thread-Topic: AcceptEventActionActivation::match should match instances of descendants of a trigger's signal Thread-Index: AQHPosGg5x1dDWSHzk68GEuQvkVRUQ== Date: Fri, 18 Jul 2014 19:51:13 +0000 Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [70.158.101.211] X-Mailprotector-Decision: deliver X-Mailprotector-Original-Sender: ed-s@modeldriven.com X-Mailprotector-Original-Recipients: issues@omg.org X-Mailprotector-Redirect-To: ed-s@modeldriven.com X-Mailprotector-Connection: TLSv1|cas203.mailprotector.com|54.208.113.85|CAS203.mailprotector.local|0.0|0.0|0|||0|0|0|0 X-Mailprotector-Results: subject_50_chars clean X-Mailprotector-Score: 20 X-Mailprotector-IP-Analysis: 0, 54.208.113.85, Ugly c=0 p=0 Source New X-Mailprotector-Scan-Diagnostics: 0-0-0-3964-c X-Mailprotector-ID: 92324005-bda8-4843-8533-327389a9fa16 X-Virus-Scanned: amavisd-new at omg.org Specification: Semantics of a Foundational Subset for Executable UML Models (FUML), v1.1 (formal-13-08-06) Subclause: 8.6.4.2.1 AcceptEventActionActivation The AcceptEventActionActivation::match operation should not require equality of Signals to match a signal instance to the Signal of a trigger of the AcceptEventAction. Rather, it should allow the Signal of the signal instance to be a descendant of the Signal of a trigger SignalEvent.