Previous UML Classes Table of Contents UML Packages Next


12.3.10 ActivityPartition

IntermediateActivities


   An activity partition is a kind of activity group for identifying actions that have some characteristic in common.

*Generalizations

*Description

   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.

*Attributes

*Associations

   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)

*Constraints

   [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.

*Semantics

   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.

*Notation

   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

*Presentation Options

   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.

*Examples

   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.

Figure 12.59 - Activity partition using swimlane example

Figure 12.60 - Activity partition using annotation example

   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

Figure 12.61 - Activity partition using multidimensional swimlane example

   Activity partitions are introduced to support the assignment of domain-specific information to nodes and edges.

*Changes from previous UML

   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.