【UML】活动图介绍
1、活动图,即Activity Diagram,是UML中用于对系统的动态行为建模的一种常用工具,它描述活动的顺序,展现从一种活动到另一种活动的控制流。其本质上是一种流程图,着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
2、活动图的组成元素有:Activity(活动状态)、Actions(动作状态)、Action Contraints(动作状态约束)、Control Flow(控制流)、Initial Node(开始节点)、 Final Node(结束节点)、Objects(对象)、DataStore(数据存储器)、Object Flows(对象流)、Decision and Merge Node(分支与合并节点)、Fork and Join(分叉与汇合节点)、Exception Handler(异常处理器)、Interruptible Activity Region(活动中断区域)、Partition(泳道)。
3、Activity用于表达状态机中非原子的运行。其特点如下:
- 可以分解成其他子活动或者动作状态。
- 内部活动可以用另一个活动图来表示。
- 和Actions不同,Activity可以有入口动作和出口动作,也可以有内部转移。
- Actions是Activity的一个特例,如果某个Activity只包括一个动作,那么它就是一个Actions。
UML中Activity和Actions的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息。
4、Actions指原子的、不可中断、不可再分的动作,并在此动作完成以后转向另一个状态。其特点如下:
- 原子的,它是构造活动图的最小单位。
- 不可中断。
- 瞬时的行为。可以有入转换,入转换既可以是动作流,也可以是对象流。Actions至少有一条出转换,这条转换以内部的完成为起点,与外部事件无关。
- Actions与状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移。
- 在一张活动图中,Actions允许多处出现。
5、Action Constraints 用来约束Action。
6、Control Flow 即Action之间的转换,用带箭头的直线表示,方向指向转入的Action。
7、Object Flow 表示Activity或者Action与Object之间的依赖关系。用活动图描述某个对象时,可以把涉及到的对象放置在活动图中并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。用带箭头的虚线表示,如果箭头是从Action出发指向Object,则表示Action对Object施加了一定的影响。施加的影响包括创建、修改和撤销等。如果箭头从Object指向Action,则表示该Action使用对象流所指向的Object。其特点如下:
- 一个Object可以由多个Action操作。
- 一个Action输出的Object可以作为另一个Action输入的Object。
- 在活动图中,同一个Object可以多次出现,它的每一次出现表明该Object正处于Object生存期的不同时间点。
8、Devision and Merge Node 使用空心菱形表示。
9、Fork and Join 分为水平方向和竖直方向。Object在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
10、Exception Handler 当受保护的Activity发生异常时触发异常处理节点。
11、Interruptible Activity Region 围绕一些可被中断的动作状态图。比如,正常情况下【Process Order】顺序流转到【Close Order】,订单处理流程完毕;但在【Process Order】过称中,会发送【Cancel Order】请求,这时会流转到【Cancel Order】,从而订单处理流程结束:
12、Partition 将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
13、活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。活动图能够表示并发活动的情形,活动图是面向对象的。
本文参考:http://www.cnblogs.com/ywqu/archive/2009/12/14/1624082.html