活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展
现从一个活动到另一个活动的控制流.活动图在本质上是一种流程图。
-------------------------------
什么是活动?活动图与状态图的区别是什么?
活动是某件事情正在进行的状态,既可以是现实生活中正在进行的某 项工作,也可以是软
件系统某个类对象的一个操作。活动在状态机中表现为由一系列动作组成的非原子的执行过程。
虽然活动图与状态图都是状态机的表现形式,但是两者还是有本质区别·活动图着重表
现从一个活动到另一个活动的控制流,是内部处理驱动的流程:而状态图着重描述从一个状
态到另一个状态的流程, 主要有外部事件的参与。
-------------------------------
活动图的图形表示
在UML中,活动图表示成圆角矩形,与状态图的圆角矩形相比,活动图的矩形的圆角
更柔和,看上去接近椭圆。活动图的图标包含对活动的描述(如活动名)。如果一个活动引发
下一个活动,两个活动的图标之间用带箭头的直线连接。 与状态图类似,活动圈也有起点和
终点,表示法和状态图相同。
活动图中还包括分支与合并、分叉与汇合等模型元素。 分支与合并的图标和状态图中判定
的图标相同,而分叉与汇合则用一条加粗的线段表示。
-------------------------------
活动图与流程图的区别
虽然活动图描述系统使用的活动、判定点和分支,看起来和流程图没什么两样,并且传
统的流程图所能表示的内容,大多数情况下也可以使用活动图表示,但是两者是有区别的,
不能将两个概念混淆。
活动图与流程图的区别如下。
(1)流程阁着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程
之间有严格的顺序和时间关系;而活动图描述的是对象活动的顺序关系所遵循的规则,它着
重表现的是系统的行为,而非系统的处理过程。
(2) 活动图能够表示并发活动的情形,而流程图不能。
(3) 活动图是面向对象的,而流程图是面向过程的.
-------------------------------
活动图的组成元素
UML的活动图中包含的图形元素有动作状态、 活动状态、动作流、分支与合并、分叉与
汇合、泳道和对象流等。
4 分支与合并
动作流一般会自动进行控制转换,直到遇到分支.分支在软件系统流程中很常见,它
般用于表示对象类所具有的条件行为。一个无条件的动作流可以在一个动作状态的动作完成
后自动触发动作状态的转换以激发下一个动作状态,而有条件的动作流则需要根据条件,即
一个布尔表达式的真假来判定动作的流向.条件行为用分支和合并表达。
在活动图中分支与合并用空心小菱形表示。分支包括一个入转换和两个带条件的出转
换,出转换的条件应当是互斥的,这样可以保证只有一条出转换能够被触发。合并包括两个
带条件的入转换和一个出转换,合并表示从对应的分支开始的条件行为的结束。
5 分支与汇合
对象在运行时可能会存在两个或者多个并发运行的控制流,为了对并发的控制流建馍,
在UML中寻|入了分叉与汇合的概念,分叉用于将动作流分为两个或者多个并发运行的分支,
而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每
个转换都可以是独立的控制流。
汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能
继续往下进行。每个汇合可以有两个或多个输入转换和一个输出转换。
分叉和汇合都使用加粗的水平线段表示。
6 泳道
泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织.&P
对象。 在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进
行的。 在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
在活动图中,泳道用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道上方可以给出
泳道的名字或对象(对象类〕的名字,该对象(对象类〉负责泳道内的全部活动。泳道没有
顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
7 对象流
对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对
对象的影响。 用活动图描述某个对象时,可以把涉及到的对象放置在活动图中并用一个依赖
将其连接到进行创建;修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成
了对象流。
对象流中的对象有如下特点·
(1) 个对象可以由多个动作操纵,
2)一个动作输出的对象可以作为另一个动作输入的对象:
(3)在活动图中,同一个对象可以多次出现,它的每-次出现表明该对象正处于对象生
存期的不同时间点.
在活动图中,对象流用带有箭头的虚线表示。如果箭头从动作状态出发指向对象,则表
示动作对对象施加了一定的影响。施加的影响包括创建、修改和撤销等。如果箭头从对象指
向动作状态,则表示该动作使用对象流所指向的对象。
-------------------------------
活动的分解
一个活动可以分为若干个动作或子活动,这些动作和子活动本身又可以组成一个活动
图。不含内嵌活动或动作的活动称之为简单活动:嵌套了若干活动或动作的活动称之为组合
活动,组合活动有自己的名字和相应的子活动图。
-------------------------------
活动图建模技术
在系统建模的过程中,活动图能够附加到任何建模元素中以描述其行为,这些元素包括
用例、类、接口、节点、协作、操作和方法等。通常来说,用活动图对工作流建模可遵循如
下步骤:
(1)识别要对工作流描述的类或对象a 找出负责工作流实现的业务对象,这些对象可以
是显示业务领域的实体,也可以是一种抽象的概念和事物。找出业务对象的目的是为每一个
重要的业务对象建立泳道。
(2) 确定工作流的初始状态和终止状态,明确工作流的边界。
(3)对动作状态或活动状态建模。找出随时间发生的动作和活动,将它们表示为动作状
态或活动状态。
(4) 对动作流建模。对动作流建模时可以首先处理顺序动作,接着处理分支与合并等条
件行为,然后处理分叉与汇合等并发行为。
(5) 对对象流建模。找出与工作流相关的重要对象,并将其连接到相应的动作状态和活
动状态。
(6) 对建立的模型进行精化和细化。