A DecisionNode can be used to control the flow of execution within a particular operation, and accepts any number of incoming DataFlowEdges and Conditions, depending on the type of DecisionNode. A DecisionNode must have at least one failure edge and one success edge.
An ActivityOperation
may contain any number of DecisionNodes.
When the execution flow arrives at a
DecisionNode, all incoming edges are
passed to the particular node, and the decision is evaluated as either true
or false
. If the DecisionNode
is considered to be false
, the execution flow will follow all
outgoing failure edges sequentially. If the
DecisionNode is considered to be true
,
the execution flow will follow all outgoing success edges sequentially.
The DecisionNode element is based on the UML DecisionNode model element.
A DecisionNode
named
"true?" accepts any number of incoming
DataFlowEdges. This node is true
if and only if all incoming values can be cast to the boolean
type, and are all considered true
through logical conjunction.
A DecisionNode
named
"equal?" accepts any number of incoming
DataFlowEdges. This node is true
if and only if all incoming values can be cast to the string
type, and all string
-cast representations can be considered
equal in terms of the fn:codepoint-equal
XQueryFunction.
A DecisionNode
named
"can cast?" accepts one incoming DataFlowEdge
(source), and has one outgoing
DataFlowEdge (target). This
node is true
if and only if the current instance from the source
edge can be successfully casted to the data type specified by the target
edge, as discussed in CastNode.
true
ifthe incoming
CastNode (through a
DataFlowEdge) couldnot be cast correctly.
[CanCastCondition]
true
ifthe incoming
CastNode (through a
DataFlowEdge) couldnot be cast correctly.
[CanCastCondition]
true
for execution to pass.
[Contents]
true
if the current element has been generated.