UML 2 Activity Diagram
In UML, an activity diagram is used to display the sequence of activities. Activity diagrams show the workflow from a start point to the finish point detailing the many decision paths that exist in the progression of events contained in the activity. They may be used to detail situations where parallel processing may occur in the execution of some activities. Activity diagrams are useful for business modelling where they are used for detailing the processes involved in business activities.
An Example of an activity diagram is shown below.
The following sections describe the elements that constitute an activity diagram.
An activity is the specification of a parameterized sequence of behaviour. An activity is shown as a round-cornered rectangle enclosing all the actions, control flows and other elements that make up the activity.
An action represents a single step within an activity. Actions are denoted by round-cornered rectangles.
Constraints can be attached to an action. The following diagram shows an action with local pre- and post-conditions.
A control flow shows the flow of control from one action to the next. Its notation is a line with an arrowhead.
An initial or start node is depicted by a large black spot, as shown below.
There are two types of final node: activity and flow final nodes. The activity final node is depicted as a circle with a dot inside.
The flow final node is depicted as a circle with a cross inside.
The difference between the two node types is that the flow final node denotes the end of a single control flow; the activity final node denotes the end of all control flows within the activity.
Objects and Object Flows
An object flow is a path along which objects or data can pass. An object is shown as a rectangle.
An object flow is shown as a connector with an arrowhead denoting the direction the object is being passed.
An object flow must have an object on at least one of its ends. A shorthand notation for the above diagram would be to use input and output pins.
A data store is shown as an object with the «datastore» keyword.
Decision and Merge Nodes
Decision nodes and merge nodes have the same notation: a diamond shape. They can both be named. The control flows coming away from a decision node will have guard conditions which will allow control to flow if the guard condition is met. The following diagram shows use of a decision node and a merge node.
Fork and Join Nodes
Forks and joins have the same notation: either a horizontal or vertical bar (the orientation is dependent on whether the control flow is running left to right or top to bottom). They indicate the start and end of concurrent threads of control. The following diagram shows an example of their use.
A join is different from a merge in that the join synchronizes two inflows and produces a single outflow. The outflow from a join cannot execute until all inflows have been received. A merge passes any control flows straight through it. If two or more inflows are received by a merge symbol, the action pointed to by its outflow is executed two or more times.
An expansion region is a structured activity region that executes multiple times. Input and output expansion nodes are drawn as a group of three boxes representing a multiple selection of items. The keyword "iterative", "parallel" or "stream" is shown in the top left corner of the region.
Exception Handlers can be modelled on activity diagrams as in the example below.
Interruptible Activity Region
An interruptible activity region surrounds a group of actions that can be interrupted. In the very simple example below, the "Process Order" action will execute until completion, when it will pass control to the "Close Order" action, unless a "Cancel Request" interrupt is received, which will pass control to the "Cancel Order" action.
An activity partition is shown as either a horizontal or vertical swimlane. In the following diagram, the partitions are used to separate actions within an activity into those performed by the accounting department and those performed by the customer.