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 扩展区域的例子
上海交通大学软件学院 饶若楠, “面向对象分析与设计”课程资料 ,请勿外传
发布评论