Previous | UML Classes | Table of Contents | UML Packages | Next |
An activity edge is an abstract class for directed connections between two activity nodes.
•
RedefinableElement (from Kernel ) on page 132
ActivityEdge is an abstract class for the connections along which tokens flow between activity nodes. It covers control and
data flow edges. Activity edges can control token flow.
Package CompleteActivities
Complete activity edges can be contained in interruptible regions.
No additional attributes
Package BasicActivities
Issue 8210 -add subsets and redefines constraints to appropriate entries
• activity : Activity[0..1] Activity containing the edge. {Subsets Element::owner}
• /inGroup : ActivityGroup [0..*] Groups containing the edge. Multiplicity specialized to [0..1] for StructuredActivityGroup .
Issue 9089 -rename as ‘redefinedEdge’ and replace Redefines with Subsets
• redefinedEdge: ActivityEdge [0..*] Inherited edges replaced by this edge in a specialization of the activity. {Subsets RedfinableElement::redefinedElement}
• source ActivityNode [1..1] Node from which tokens are taken when they traverse the edge.
• target : ActivityNode [1..1] Node to which tokens are put when they traverse the edge.
Package IntermediateActivities
• inPartition : Partition [0..*] Partitions containing the edge. {Subsets ActivityEdge ::inGroup}
• guard : ValueSpecification [1..1] = true Specification evaluated at runtime to determine if the edge can be traversed. {Subsets Element::ownedElement}
Package CompleteStructuredActivities
• inStructuredNode : StructuredActivityNode [0..1] Structured activity node containing the edge. {Subsets ActivityEdge ::inGroup}
Package CompleteActivities
• interrupts : InterruptibleActivityRegion [0..1] Region that the edge can interrupt.
Issue 8919 replace ‘objects’ with ‘tokens’
weight : ValueSpecification [1..1] = 1 | Number of tokens consumed from the source node on each traversal. {Subsets Element::ownedElement} |
[1] The source and target of an edge must be in the same activity as the edge.
[2] Activity edges may be owned only by activities or groups.
Package CompleteStructuredActivities
[1] Activity edges may be owned by at most one structured node.
Activity edges are directed connections, that is, they have a source and a target, along which tokens may flow.
Other rules for when tokens may be passed along the edge depend on the kind of edge and characteristics of its source and
target. See the children of ActivityEdge and ActivityNode. The rules may be optimized to a different algorithm as long as
the effect is the same.
The guard must evaluate to true for every token that is offered to pass along the edge. Tokens in the intermediate level of
activities can only pass along the edge individually at different times. See application of guards at DecisionNode .
Package CompleteActivities
Any number of tokens can pass along the edge, in groups at one time, or individually at different times. The weight attribute
dictates the minimum number of tokens that must traverse the edge at the same time. It is a value specification evaluated
every time a new token becomes available at the source. It must evaluate to a positive LiteralUnlimitedNatural , and may be
a constant. When the minimum number of tokens are offered, all the tokens at the source are offered to the target all at once.
The guard must evaluate to true for each token. If the guard fails for any of the tokens, and this reduces the number of tokens
that can be offered to the target to less than the weight, then all the tokens fail to be offered. An unlimited weight means
that all the tokens at the source are offered to the target. This can be combined with a join to take
all of the tokens at the source when certain conditions hold. See examples in Figure 12.45. A weaker but simpler
alternative to weight is grouping information into larger objects so that a single token carries all necessary data. See additional
functionality for guards at DecisionNode .
Other rules for when tokens may be passed along the edge depend on the kind of edge and characteristics of its source and
target. See the children of ActivityEdge and ActivityNode. The rules may be optimized to a different algorithm as long as
the effect is the same. For example, if the target is an object node that has reached its upper bound, no token can be passed.
The implementation can omit unnecessary weight evaluations until the downstream object node can accept tokens.
Edges can be named, by inheritance from RedefinableElement , which is a NamedElement . However, edges are not required to have
unique names within an activity. The fact that Activity is a Namespace , inherited through Behavior, does not affect this,
because the containment of edges is through ownedElement, the general ownership metaassociation for Element that does not
imply unique names, rather than ownedMember.
Edges inherited from more general activities can be replaced. See RedefinableElement for more information on overriding inherited
elements.
See variations at children of ActivityEdge and ActivityNode.
Issue 8210 -replace ‘stick’ with ‘open’
An activity edge is notated by a open arrowhead line connecting two activity nodes. If the edge has a name, it is notated
near the arrow.
Regular activity edge Activity edge with name
Figure 12.39 - Activity edge notation
An activity edge can also be notated using a connector, which is a small circle with the name of the edge in it. This is purely
notational. It does not affect the underlying model. The circles and lines involved map to a single activity edge in the model.
Every connector with a given label must be paired with exactly one other with the same label on the same activity diagram.
One connector must have exactly one incoming edge and the other exactly one outgoing edge, each with the same type of flow,
object or control. This assumes the UML 2.0 Diagram Interchange specification supports the interchange of diagram elements
and their mapping to model elements.
(where, n is connector name)
Figure 12.40 - Activity edge connector notation
Package CompleteActivities
The weight of the edge may be shown in curly braces that contain the weight. The weight is a value specification that is a
positive integer or null, which may be a constant. A weight of null is notated as all. When regions have interruptions, a
lightning-bolt style activity edge expresses this interruption, see InterruptibleActivityRegion . See Pin for filled arrowhead
notation.
{weight=*}
Activity edge for interruptible regions
With edge weight(where n is a value specification)
Figure 12.41 - Activity edge notation
Package BasicActivities
In the example illustrated below, the arrowed line connecting Fill Order to Ship Order is a control flow edge. This means
that when the Fill Order behavior is completed, control is passed to the Ship Order. Below it, the same control flow is shown
with an edge name. The one at the bottom left employs connectors, instead of a continuous line. On the upper right, the arrowed
lines starting from Send Invoice and ending at Make Payment (via the Invoice object node) are object flow edges. This indicates
that the flow of Invoice objects goes from Send Invoice to Make Payment.
Invoice
is equivalent to
Figure 12.42 - Activity edge examples
In the example below, a connector is used to avoid drawing a long edge around one tine of the fork. If a problem is not priority
one, the token going to the connector is sent to the merge instead of the one that would arrive from Revise Plan
for priority one problems. This is equivalent to the activity shown in Figure 12.44, which is how Figure 12.43 is stored in
the model.
Figure 12.44 - Equivalent model to Figure 12.43
Package CompleteActivities
The figure below illustrates three examples of using the weight attribute. The Cricket example uses a constant weight to indicate
that a cricket team cannot be formed until eleven players are present. The Task example uses a non-constant weight to indicate
that an invoice for a particular job can only be sent when all of its tasks have been completed. The proposal example depicts
an activity for placing bids for a proposal, where many such bids can be placed. Then, when the bidding period is over, the
Award Proposal Bid activity reads all the bids as a single set and determines which vendor to award the bid.
{weight=11} {weight=no_of_job_tasks}
Cricket
Task
Player
[completed]
Figure 12.45 - Activity edge examples
Activity edges are introduced to provide a general class for connections between activity nodes.
ActivityEdge replaces the use of (state) Transition in UML 1.5 activity modeling. It also replaces data flow and control flow
links in UML 1.5 action model.