版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
- 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著
活动图概述
活动图(activity diagram)是 UML中一种重要的用于表达系统动态特性的图。活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。
具体地说,活动图的表达能力包括了逻辑判断、分支甚至并发。所以活动图的表达能力要远高于流程图。流程图仅仅展示一个固定的过程,而活动图可以展示并发和控制分支,并且可以对活动与活动之间信息的流动进行建模。
活动图的组成元素
请务必熟悉并掌握以下核心知识点。
动作和活动节点
动作代表一个原子操作,操作可能是任何合法的行为。在活动图中,动作使用一个左右两端为圆弧的矩形框来表示,在这个图形内部加人该动作的描述。
活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图中的表达方式和动作相同,它们之间的区分需要依靠编辑工具或附加说明来完成。
活动节点本身可以代表一个复杂过程,它的控制流由其他的活动节点和动作组成,如需要可以另附其他的活动图来表达活动节点的控制流。
开始和终止
活动图中的开始和终止是两个标记符号。开始标记注明了业务流程的起始位置,使用一个实心黑色圆点表示。终止标记注明了业务流程的可能结束位置,使用一个与开始标记等大的、内有一个黑色实心小圆点的空心圆圈来表示。
控制流
控制流是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导着各个动作的连续执行。
在 UMI中,控制流使用一条从前一个动作(或活动节点)出发指向下一个动作(或活动节点)的简单箭头表示。
判断节点
判断节点是活动图中进行逻辑判断、并创造分支的一种方法。判断节点具有一个进入控制流和至少两个导出控制流(从当前节点出发指向其他动作或节点的流称为导出流或离开流),判断节点的前一个动作应当是判断型动作。
在活动图中判断节点用一个菱形来表示。并且作为判断节点,这个菱形有且仅有一个指向它的箭头,有至少两个由它出发指向其他动作或活动节点的箭头。
合并节点
合并节点将多个控制流进行合并,并统一导出到同一个离开控制流。在活动图中合并节点也同样使用一个菱形来表示。作为合并节点,这个菱形应该至少有两个指向它的箭头,有且仅有一个由它出发指向其他动作或活动节点的箭头。
泳道
活动图中的元素可以使用泳道来分组。泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。在业务模型中,每个泳道的负责对象可能是一个单位或一个部门。例如,在一次考试的全过程中,有如下过程:
- (1)老师出卷
- (2) 学生作答
- (3) 老师批卷
- (4)老师打印成绩单
- (5)学生领取成绩单
在这个过程中,可以发现每个过程的主语都是该动作的执行者,那么在这个简单的过程中可以分“老师”和“学生”两个泳道,把动作与负责执行它的对象用这种形如二维表的方式进行关联。
分叉节点与结合节点
在活动图中,我们使用分叉节点和结合节点来表示并发。
分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进入控制流和多个离开控制流。
结合节点是将多个并发控制流收束回同一流程的节点标记。
航空购票系统活动图
在此,以航空购票系统的购买机票用例为例绘制活动图;图示如下:
确定泳道
开始创建活动图时,需要首先确定参与的对象,即确定活动图有几个泳道。泳道说明了活动是由该对象执行的。在该案例中,我们将其粗粒度地分为用户和系统两个泳道。
与创建用例图类似,请在Model中创建活动图;图示如下:
点击确定后,图示如下:
选中活动图,右键单击选择添加图,再选择UML Behavioral和Activity;图示如下:
单击确定后,图示如下:
首先,将工具箱中的泳道Partition拖拽至绘图区添加用户泳道;图示如下:
点击确定,图示如下:
调整泳道方向,图示如下:
调整泳道方向和长度;图示如下:
类似地,添加系统泳道并将其与用户泳道对齐;图示如下:
按照逻辑顺序完成活动图
在添加完泳道后,需要梳理整个控制流的过程:用户首先选择购票的航班,此时如果该航班已无余票,则系统提示该航班已无票,用户重新选择航班;如果航班有余票,则系统请求用户确认购票信息,此时用户可以取消购票也可以确认购票并支付,支付完成后系统修。
首先,将Initial拖动至用户泳道作为起点;图示如下:
点击确定后,图示如下:
将Activity拖动至用户泳道作为选择航班的活动;图示如下:
点击确定后,可以调整活动框大小;图示如下:
将Decision拖动至系统泳道作为判断节点;图示如下:
单击确定后图示如下:
类似地,在系统泳道添加两个活动即提示航班无余票和确认机票信息;图示如下:
将Decision拖动至用户泳道作为判断节点;图示如下:
将Final拖动至系统泳道作为第一个终止;图示如下:
单击确定;图示如下:
将Activity拖动至用户泳道作为支付活动;图示如下:
将工具箱中的Fork/Join拖动至系统泳道作为分叉节点;图示如下:
单击确定后调整分叉节点长度;图示如下:
类似地,在系统泳道中的分叉节点添加修改机票状态活动和生成订票记录活动;图示如下:
类似地,将工具箱中的Fork/Join拖动至系统泳道作为结合节点;图示如下:
最后,将Final拖动至系统泳道作为第二个终止;图示如下:
接下来,我们依据流程使用工具箱中Activity Relationships中的Control Flow连线;图示如下:
在目前的活动图中,还缺乏判断节点的说明;图示如下:
请双击连线添加说明文本;图示如下:
单击确定后并调整文本位置;图示如下:
类似地,添加有余票的文本说明;图示如下: