UML-活动图(分支,合并,分岔,汇合等)
概述
活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。可通过一系列操作将业务流程或软件进程以工作流的形式显示出来。这些操作可以由人、软件组件或计算机来执行。
构成
活动图的组成元素一般包括:活动状态、动作状态、转换、对象、分支、合并、分岔、汇合、 泳道、 对象流。
活动状态
活动图所描绘的工作流。其特点如下:
(1)、活动状态可以分解成其他子活动或者动作状态。
(2)、活动状态的内部活动可以用另一个活动图来表示。
(3)、和动作状态不同,活动状态可以有入口动作和出口动作,也可以有内部转移。
(4)、动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态。
UML中活动状态和动作状态的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息。
UML 活动图
用于显示活动的关系图。
对象
表示通过流传递的数据。
图示体现:矩形
根据并发、数据的特性又可将活动图分为简单控制流、并发控制流、数据控制流。
简单控制流
简单控制流 图示:
简单控制流有以下的构成:
初始节点
指示活动状态中的第一个操作或第一组操作。活动开始时,令牌从初始节点流出。
图示体现:黑点标识流向第一个操作
操作
活动中的一个步骤,也称动作。用户或软件可以在其中执行某项任务。这些可执行的原子计算被称作动作状态。动作状态不能被分解。动作状态是原子的,也就是说事件可以发生,但动作状态的工作不能被打断。动作状态的工作所占用的执行时间一般被看做忽略不计。(动作状态概念出自《软考设计师教程第五版》一书中,书中描述中的动作状态,我认为就是动作。)
操作可以在令牌到达其所有传入流时开始。操作结束后,令牌会在所有传出流上进行发送。
图示体现:圆角矩形
控制流
也称转换。显示操作之间的控制流的连接线。在解释关系图时,假设有一个令牌从一个操作流向下一个操作。
图示体现:箭头直线
决策节点(分支)
流中的一个条件分支。具有一个输入以及两个或多个输出。传入令牌只会在一个输出上显示。
图示体现:多个输出且仅一个输入(一条控制流指向)的菱形
合并节点
在合并由决策节点拆分的流时需要用到。具有两个或多个输入以及一个输出。任何输入上的令牌都会在输出上显示。
合并节点的存在可以使结构更加清晰,然而合并节点并不是必须的存在。也可以将决策节点(分支)的某条分支流直接流入目标操作上。(如《软考设计师教程第五版》一书中直接讲分支的某条控制流流入目标的动作状态(操作)。)
图示体现:多个输入且仅一个输出(一条控制流指出)的菱形。
结束节点
标志着活动的结束。令牌到达时,活动将终止。
图示体现:最后一个控制流流向黑点外廓描边标识。
并发控制流
分岔节点
将单个流划分为并发流。每个传入令牌会在每个传出连接线上生成一个令牌。
图示:多个输出且仅一个输入的黑色矩形
汇合节点
将并发流合并为单个流。当每个传入流有等待的令牌时,输出上就会生成一个令牌。
图示:多个输入且仅一个输出黑色矩形
可以将消息或信号发送给另一个活动。在另一个活动中执行额外的动作。如下图所示
发送信号操作
一种操作,可以将消息或信号发送给另一个活动,或同一活动中的并发线程。消息的类型和内容可以通过操作的标题或其他注释中指定的信息看出。
此操作能够以信号形式发送数据。
图示体现:13.发送发票
接受事件操作
一种要在等到消息或信号后才能继续执行的操作。此操作能接收的消息类型可以通过操作的标题或其他注释中指定的信息看出。
如果此操作没有传入控制流,它会在收到消息后立即生成一个令牌。
此操作能够以信号形式接收数据
图示体现:14.收款
数据控制流
可以描述从一个操作到另一个操作的数据流。
继并发流的例子。消息的目标接收到了并发流例子中发送发票的信号。发送发票的信号传递给对象流或输入插针 (16) 中的操作。
对象节点
表示通过流传递的数据。
图示体现:15
输入插针
表示操作执行时可以接收的数据。
Type - 传输的对象的类型。
图示体现:16
输出插针
表示操作执行时生成的数据。
Type - 传输的对象的类型。
图示体现:17
活动参数节点
一种对象节点,通过该节点活动可以接收或生成数据。
在通过另一个活动调用此关系图表示的活动时使用,或在此关系图描述操作或函数时使用。
图示体现:18
泳道
泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
参考文献
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/2799/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!