活动图的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。活动图中一个活动结束后将立即进入下一个活动(在状态图中状态的变迁可能需要事件的触发)。图1给出了一个活动图的例子。
活动和转移
一项操作可以描述为一系列相关的活动。活动仅有一个起始点,但可以有多个结束点。活动间的转移允许带有guard-condition、send-clause和action-expression,其语法与状态图中定义的相同。一个活动可以顺序地跟在另一个活动之后,这是简单的顺序关系。如果在活动图中使用一个菱形的判断标志,则可以表达条件关系(见图1),判断标志可以有多个输入和输出转移,但在活动的运作中仅触发其中的一个输出转移。
活动图对表示并发行为也很有用。在活动图中,使用一个称为同步条的水平粗线可以将一条转移分为多个并发执行的分支,或将多个转移合为一条转移。此时,只有输入的转移全部有效,同步条才会触发转移,进而执行后面的活动,如图2所示。