2024年5月3日发(作者:)

活动图(Activity Diagram)

UML中的活动图(Activity Diagram)是七种UML行为图中的一种,它显示从活动到活

动的控制流。活动图可用于描述整个企业或业务模型内的工作流,也可用于描述用例的事件

流,或用于对操作建模。图2-12是一个描述订单处理过程的活动图的例子。

活动图中的元素除活动(activity)和动作(action)、控制流(control flow)和控

制节点(control node)、对象和对象流(object flow)、信号(Signal)、分区(partition,

或称泳道(swim lane))等基本元素之外,还有异常处理(exception handler)、可中断活

动域 (Interruptible Activity Region )、扩展区域(Expansion region)和结构化活动

域(structured activity region)等高级元素。

活动(Activity)是一个参数化的行为顺序的详细说明,包含所有的动作、控制流和

其他组成这个活动的元素。活动用圆角矩形表示,如图2-13所示。

动作(Action)代表在

一个活动中的不可分割的一个单步,也用一个圆角矩形表示,如图2-13所示。

控制流

(Control Flow)用来表示从一个动作到另一个动作的流的控制,用一个带箭头的直线表

示,如图2-13所示。

控制节点(control nodes)是一种活动节点,它用于协调与其他节点之间的控制流。

它包括初始节点(initial node)和终止节点(final node)、 并发分叉节点(fork node)

和并发汇合节点(join node)、分支节点(decision node)和合并节点(merge node)。

 初始节点(Initial Node):活动开始的节点。用一个实心圆表示。

 终止节点(Final Node):包括两种类型:活动终止和流终止,如图2-14所示。

 流终止(flow final)描述一个单一控制流的结束,用一个带十字叉的圆表示。

 活动终止(activity final)描述在活动中的控制流的结束。用一个带边框的

实心圆表示。

 并发分叉节点(fork node)和并发汇合节点(join Nodes):用于表示并发流,UML

符号是同步棒,即一条水平或垂直粗线。并发分叉节点表示并发流程的开始,并发

汇合节点表示并发流程的结束。在图2-15所示例子中,“Ship Order”和“Send

Invoice”是两个并发活动。

 分支节点(decision node)和合并节点(merge node):它们都是菱形符号,例子

如图2-16所示。

 一个分支节点可以有一个进入流和多个离去流。在每个离去流上放置一个布尔

表达式,在进入这个分支时被判断一次。在所有离去流中,其监护条件应该覆

盖所有可能性(否则控制流可能会冻结),同时不应该重叠(否则控制流可能

有二义性)。

 一个合并节点可以有多个进入流和一个离去流。它可以将多个控制路径重新合

并。注意,如果一个合并节点接收到多个流,它的输出流指向的动作会被执行

多次。在图2-16所示例子中,“Assign tasks”活动和“Reschedule”活动的

控制路径重新合并在一起,这两个活动的任意一个完成,“Get next order”

活动就要被执行一次。

上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传

图2-12 一个描述订单处理过程的活动图的例子

分区( partition):用泳道(swimlane)符号来对活动分组,以识别一组具有共同特

征的动作。在图2-12中,“Fulfillment”、“Customer Service”和“Finance”这3个泳道

表示3个分区。

对象流(object flow):对象流是一条对象或者数据能经过的路径。对象流用于显示

如何在工作流程中创建并使用业务实体。对象流用箭头表示,指向将要经过的对象。 在对

象流中,

对象节点(object node)用矩形表示,也可以用输入动作和输出动作之间的一对

插脚(pin)来表示。图2-17是对象流的例子。

图2-13 活动、动作和控制流的例子

上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传

上海交通大学软件学院 饶若楠,面向对象分析与设计”课程资料 ,请勿外传 “

图2-18 数据存储节点的例子

异常处理(exception handler)是UML活动图的高级元素,用一个z字型的符号表示,

从被保护节点指向异常处理节点,并可说明异常类型,如图2-21所示。它说明在被保护节

点执行期间,一旦该异常类型的某个异常发生,指向的异常处理节点负责处理这个异常。

中断活动域(interruptible activity region)是UML活动图的高级元素,表示了一

个活动组区域,在该活动组区域内的的任何活动都是可以中断的。在如图2-22所示的例子

中,处于中断区域中的“Ship Order”活动、“Fill Order”活动和“Ship Order”活动可

以随时被中断。

扩展区域(expansion region)表示在元素列表或集合上执行的活动模型片断。在UML

活动图中,围绕着一个区域画一条虚线来表示扩展区域。把区域的输入和输出的值集表示为

一行相连的小方块(代表一个数组),当一个数组值到达扩展区域的输入集时,执行区域将

为数组中的每个元素执行一次。扩展区域左上方的关键字“parallel”、“iterative”、

“stream”分别表示以并行、顺序或连续的方式执行。每一次执行完后,如果有输出值就按

照与相应的输入一样的顺序把输出值放到输出数组中。所有的这些数组都必须具有同样的大

小,但不必包含相同类型的值。图12-23是一个扩展区域的例子。“接收订单”活动产生一

个类型为Order值,它包含一个类型为LineItem的数组,作为扩展区域的输入集。扩展区

域按照输入集中的每个元素循环执行区域内的操作,输出集是Shipment(Products的集合)

和Bill(Money的集合)。

图2-19 接受事件动作和接受时间事件动作的例子

上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传

图2-20 发送信号动作的例子

图2-21 异常处理

图2-22 中断活动域的例子

图2-23 扩展区域的例子

上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传