Previous | UML Classes | Table of Contents | UML Packages | Next |
An activity partition is a kind of activity group for identifying actions that have some characteristic in common.
• ActivityGroup (from BasicActivities , FundamentalActivities ) on page 346
• NamedElement (from Kernel , Dependencies ) on page 99
Partitions divide the nodes and edges to constrain and show a view of the contained nodes. Partitions can share contents.
They often correspond to organizational units in a business model. They may be used to allocate characteristics or resources
among the nodes of an activity.
• isDimension : Boolean [1..1] = false Tells whether the partition groups other partitions along a dimension.
• isExternal : Boolean [1..1] = false Tells whether the partition represents an entity to which the partitioning structure does not apply.
• superPartition : ActivityPartition [0..1] Partition immediately containing the partition. (Subsets ActivityGroup ::superGroup)
• represents : Element [0..1] An element constraining behaviors invoked by nodes in the partition.
Issue 9095 -rename to ‘subpartition’
• subpartition : ActivityPartition [0..*] Partitions immediately contained in the partition. (Subsets ActivityGroup ::subgroup).
Issue 8222 -add containedNode and containedEdge items 9105 -rename ‘containedEdge’ as ‘edge’ and change redefines to subsets
9106 -rename ‘containedNode’ to ‘node’
• node : ActivityNode [0..*] Nodes immediately contained in the partition. (Subsets
ActivityGroup ::containedNode)
• edge : ActivityEdge [0..*] Edges immediately contained in the partition. (Subsets
ActivityGroup ::containedEdge)
[1] A partition with isDimension = true may not be contained by another partition.
Issue 8781 -remove constraint
[2] If a partition represents a part, then all the non-external partitions in the same dimension and at the same level of
nesting in that dimension must represent parts directly contained in the internal structure of the same classifier.
[3] If a non-external partition represents a classifier and is contained in another partition, then the containing partition
must represent a classifier, and the classifier of the subpartition must be nested in the classifier represented by the containing
partition, or be at the contained end of a strong composition association with the classifier represented by the containing
partition.
[4] If a partition represents a part and is contained by another partition, then the part must be of a classifier represented
by the containing partition, or of a classifier that is the type of a part representing the containing partition.
Partitions do not affect the token flow of the model. They constrain and provide a view on the behaviors invoked in activities.
Constraints vary according to the type of element that the partition represents. The following constraints are normative:
1) Classifier
Behaviors of invocations contained by the partition are the responsibility of instances of the classifier represented by the
partition. This means the context of invoked behaviors is the classifier. Invoked procedures containing a call to an operation
or sending a signal must target objects at runtime that are instances of the classifier.
2) Instance
This imposes the same constraints as classifier, but restricted to a particular instance of the classifier.
3) Part
Behaviors of invocations contained by the partition are the responsibility of instances playing the part represented by the
partition. This imposes the constraints for classifiers above according to the type of the part. In addition, invoked procedures
containing a call to an operation or sending a signal must target objects at runtime that play the part at the time the message
is sent. Just as partitions in the same dimension and nesting must be represented by parts of the same classifier’s internal
structure, all the runtime target objects of operation and signal passing invoked by the same execution of the activity must
play parts of the same instance of the structured classifier. In particular, if an activity is executed in the context of
a particular object at runtime, the parts of that object will be used as targets. If a part has more than one object playing
it at runtime, the invocations are treated as if they were multiple, that is, the calls are sent in parallel, and the invocation
does not complete until all the operations return.
4) Attribute and Value
A partition may be represented by an attribute and its subpartitions by values of that attribute. Behaviors of invocations
contained by the subpartition have this attribute and the value represented by the subpartition. For example, a partition
may represent the location at which a behavior is carried out, and the subpartitions would represent specific values for that
attribute, such as Chicago. The location attribute could be on the process class associated with an activity, or added in
a profile to extend behaviors with these attributes.
A partition may be marked as being a dimension for its subpartitions. For example, an activity may have one dimension of partitions
for location at which the contained behaviors are carried out, and another for the cost of performing them. Dimension partitions
cannot be contained in any other partition.
Elements other than actions that have behaviors or value specifications, such as transformation behaviors on edges, adhere
to the same partition rules above for actions.
Partitions may be used in a way that provides enough information for review by high-level modelers, though not enough for
execution. For example, if a partition represents a classifier, then behaviors in that partition are the responsibility of
instances of the classifier, but the model may or may not say which instance in particular. In particular, a behavior in the
partition calling an operation would be limited to an operation on that classifier, but an input object flow to the invocation
might not be specified to tell which instance should be the target at runtime. The object flow could be specified in a later
stage of development to support execution. Another option would be to use partitions that represent parts. Then when the activity
executes in the context of a particular object, the parts of that object at runtime will be used as targets for the operation
calls, as described above.
External partitions are intentional exceptions to the rules for partition structure. For example, a dimension may have partitions
showing parts of a structured classifier. It can have an external partition that does not represent one of the parts, but
a completely separate classifier. In business modeling, external partitions can be used to model entities outside a business.
Activity partition may be indicated with two, usually parallel lines, either horizontal or vertical, and a name labeling the
partition in a box at one end. Any activity nodes and edges placed between these lines are considered to be contained within
the partition. Swimlanes can express hierarchical partitioning by representing the children in the hierarchy as further partitioning
of the parent partition, as illustrated in b), below. Diagrams can also be partitioned multidimensionally, as depicted in
c), below, where, each swim cell is an intersection of multiple partitions. The specification for each dimension (e.g., part,
attribute) is expressed in next to the appropriate partition set.
e m
a
N
n i
o i
t r
t a
P
a) Partition using a swimlane notation
e m
a
n
n
n
o
o
i e
i
s
t
i
n m
t
r
e a
e
ae
m
nm pm i
a
ba D
n
oN
uN
i
s
sn
no
i
et
n
i
t
o
m
r
i
i
t
a
i
t
D
P
r e
a
p mb
a
u N
s
b) Partition using a hierarchical swimlane notation
Figure 12.57 - Activity partition notations
Dimension name
Partition
Partition
Name-3
Name-4
n2
-
o
ie
t
i
tm
ra
a
N
P
n1
-
o
ie
t
i
tm
ra
a N
P
c) Partition using a multidimensional hierarchical swimlane notation
In some diagramming situations, using parallel lines to delineate partitions is not practical. An alternate is to place the
partition name in parenthesis above the activity name, as illustrated for actions in a), below. A comma-delimited list of
partition names means that the node is contained in more than one partition. A double colon within a partition name indicates
that the partition is nested, with the larger partitions coming earlier in the name. When activities are considered to occur
outside the domain of a particular model, the partition can be labeled with the keyword «external», as illustrated in b) below.
Whenever an activity in a swimlane is marked «external», this overrides the swimlane and dimension designation.
«external»
b) Partition notated to occur outsidea) Partition notated on a specific activity the primary concern of the model.
Figure 12.58 - Activity partition notations
When partitions are combined with the frame notation for Activity, the outside edges of the top level partition can be merged
with the activity frame.
The figures below illustrate an example of partitioning the order processing activity diagram into swim lanes. The top partition
contains the portion of an activity for which the Order Department is responsible; the middle partition, the Accounting Department,
and the bottom the Customer. These are attributes of the behavior invoked in the partitions, except for Customer, which is
external to the domain. The flow of the invoice is not a behavior, so it does not need to appear in a partition.
Invoice
The example below depicts multidimensional swim lanes. The Receive Order and Fill Order behaviors are performed by an instance
of the Order Processor class, situated in Seattle, but not necessarily the same instance for both behaviors. Even though the
Make Payment is contained within the Seattle/Accounting Clerk swim cell, its performer and location are not specified by the
containing partition, because it has an overriding partition.
«attribute» performingLocation:Location
Activity partitions are introduced to support the assignment of domain-specific information to nodes and edges.
Edges can be contained in partitions in UML 2.0. Additional notation is provided for cases when swimlanes are too cumbersome.
Partitions can be hierarchical and multidimensional. The relation to classifier, parts, and attributes is formalized, including
external partitions as exceptions to these rules.