Legacy Issue Number: 17312
Source: LieberLieber Software ( Tanja Mayerhofer)
In the method DecisionNodeActivation.fire(TokenList), a token offer is sent to each outgoing edge for which the guard evaluates to true resulting in the execution of multiple successor nodes.
Only one successor node should receive an offer also if the guards of several outgoing edges evaluate to true.
Reported: FUML 1.0 — Mon, 16 Apr 2012 04:00 GMT
Disposition: Resolved — FUML 1.1
In Subclause 12.3.22 DecisionNode of the UML Superstructure specification, it says:
“Notice that the semantics only requires that the token [offered to a decision node] traverse one edge, rather than be offered to only one edge. Multiple edges may be offered the token, but if only one of them has a target that accepts the token, then that edge is traversed. If multiple edges accept the token and have approval from their targets for traversal at the same time, then the semantics is not defined.”
Thus, it is correct that an incoming token to a decision node is offered on all outgoing edges for which the guard is satisfied. In fUML, if multiple downstream targets then try to accept the offered token at the same time, the semantics is the same as in any case of contention for a token. Only one of the targets can actually accept the token since a decision node does not duplicate tokens, there is only one token to be accepted. Which of the targets actually gets the token is indeterminate, however.
Disposition: Closed, No Change
Updated: Fri, 6 Mar 2015 20:58 GMT
FUML11 — DecisionNodeActivation can send offers to multiple outgoing edges
- Key: FUML11-26
- OMG Task Force: fUML 1.1 RTF