活动图教程

活动图类似於业务工作流程图或简单的流程图,具有更丰富的语义。它描述了系统活动,或进行活动的人,以及这些活动的顺序流程。活动图是与面向对象方法相关的 UML 图之一,通过它可以用於任何其他软件开发范式

活动图示例


什麽是 UML 中的活动图?

活动图可用於描述如何协调活动以提供不同抽象级别的服务。活动图的强大之处在於它们支持和鼓励并行行为。这使它们成为工作流建模和多线程编程的绝佳工具。活动图还可以通过使用对象名称标记活动或使用泳道来定义到对象的链接,这使得活动图能够基於职责进行结构化。

活动图一览

在我们深入研究活动图中单个符号的细节之前,让我们快速浏览一下一个非常通用的活动图。以下是用於详细说明业务用例的示例活动图 - 在机场办理登机手续:

活动图示例(解释)


活动图符号

初始、最终和流程最终节点

初始节点(开始状态)

  1. 活动发生之前的起始状态使用初始状态来描述。
  2. 除非我们描述嵌套活动,否则流程只能有一个初始状态。我们使用黑色实心圆圈来描绘系统的初始状态。
  3. UML 活动图中的初始状态标记了入口点和初始活动状态。

最终节点(结束状态)

在 UML 中,最终的动作状态是使用一个围绕着一个小的实心圆(一个靶心)的圆来显示的。一个活动图可能只有一个初始动作状态,但可能有任意数量的最终动作状态。

活动图初始和最终节点示例

流最终节点

UML 2.0 有一个额外的控制节点类型,称为 Flow Final,它用作 Activity Final 节点的替代方法来终止流。它是必需的,因为在 UML 2.0 中,当控制到达 Activity Final 节点的任何实例时,整个活动(包括所有流)都会终止。Flow Final 只是终止它所连接的流。

活动图流最终节点示例

注意:由於运行到完成语义,这在 UML 1.5 中不是问题,但是使用 UML 2.0 的不受限制的并行性,您可能不希望所有流停止并销毁所有标记。

动作和活动状态

UML 活动图上的活动(也称为活动状态)通常表示操作的调用、业务流程中的一个步骤或整个业务流程。

Action 是一个命名元素,它代表活动中的单个原子步骤,在活动没有进一步分解

流动过渡

给定一组动作状态,这些动作状态如何相互关联?流转换解决了这个问题,流转换显示了动作状态是如何排序或排序的。有各种类型的流转换,包括控制流和对象流转换。

控制流

动作流或控制流也称为路径和边。它们用於显示从一种活动状态到另一种活动状态的转换。一个活动状态可以有多个传入和传出的动作流。我们使用带箭头的线来描述控制流。如果在进行转换时有要遵守的约束,它会在箭头上注明。

在 UML 中,控制流转换显示为从源动作状态到目标动作状态的实线。

对象流

在 UML 中,对象流转换显示为动作状态和对象之间的虚线箭头。使用对像作为输入的操作状态显示为对象流转换箭头从对象指向操作状态。更新或生成对像作为输出的操作状态显示为对象流转换箭头从操作状态指向对象。

  1. 由动作产生或使用的对象。这允许我们对对象流进行建模。

活动图控制流示例

决策节点和分支

当我们需要在决定控制流之前做出决定时,我们使用决策节点,例如一个传入的转换,以及多个传出的并行转换和/或对象流。

决策节点

  1. 决策节点接受传入边上的令牌并将它们呈现给多个传出边。
  2. 实际遍历哪条边取决於对输出边上的守卫的评估。

活动图决策节点示例

合并节点

  1. 合并节点是一个控制节点,它汇集了多个备用流。
  2. 它不用於同步并发流,而是接受多个替代流中的一个。
  3. 合并节点具有多个传入边和单个传出边。

活动图合并节点示例

分叉节点

  1. fork 节点是一个控制节点,它将一个流拆分为多个并发流
  2. 一个分叉节点有一个入边和多个出边。

活动图分叉节点示例

加入节点

  1. 加入节点是同步多个流的控制节点。
  2. 一个连接节点有多个入边和一个出边。

活动图加入节点示例

警卫

守卫是为了遍历转换必须为真的条件。

对象节点

UML 2.0 活动建模还支持对象节点。对象节点是一个活动节点,它指示可能处於特定状态的特定分类器的实例可能在活动的特定点可用(例如,作为动作的输出或输入)。对象节点充当特定类型(并且可能处於特定状态)的对象可能流入和流出的容器。

活动图对象节点示例

数据存储

数据存储是持久存储对象的对象的构造型。

活动图数据存储示例

笔记

  1. 注释(注释)提供了将各种注释附加到元素的能力。
  2. 评论不带有语义力量,但可能包含对建模者有用的信息。

活动图注释示例

泳道

泳道活动图将活动分组到泳道列中,这些列包含适合该泳道所代表的类别的所有活动。泳道可以代表许多类别的信息,例如执行活动的参与者(即角色或部门)、活动发生的过程阶段,或者文档创建者认为应该由文档作者强调和传达的任何其他信息。泳道图。由於图表的水平行与游泳池内的泳道在视觉上相似,因此采用术语泳道。

活动图泳道示例

在 UML 中,泳道显示为通过两侧垂直实线与相邻泳道分开的视觉区域,并在顶部标记为负责泳道内动作状态的元素。

时间事件和事件信号

当时间表达式为真时,时间事件流动,而事件发生时事件信号流动。沙漏符号可用於表示接受时间事件。

活动图时间事件示例

接受事件操作是活动图中业务流程的重要元素。接受动作等待事件发生。接受事件後,将执行来自此操作的流程。

发送信号动作是发送给接受活动的信号,该活动可以做出相应的反应。

活动图接受事件并发送信号示例


什麽时候画活动图?

活动图用於对描述条件、约束、顺序和并发活动的工作流进行建模。另一方面,用例的目的只是描述功能,即系统做什麽而不是如何完成。因此,简单来说,活动图显示“如何”,而用例显示特定系统的“内容”,因此,活动图通常与用例成对出现。

就UML而言,我们可以将活动图用於以下目的,例如:

  1. 在高级活动图中对复杂活动和业务工作流进行建模
  2. 通过检查业务工作流,确定候选用例以及用例的前置和後置条件
  3. 单个用例中的事件如何相互关联,特别是活动可能重叠并需要用例之间的协调
  4. 用例集合如何协调为组织创建工作流
  5. 用例之间/内部的模型工作流

注意:活动图可用於说明业务流程(高级实现)到独立算法(底层实现)。


活动图示例

此示例显示了剧院办公室的活动图。此图显示了策划演出所涉及的活动。

  1. 箭头显示顺序相关性——例如,必须在安排节目之前选择节目。
  2. 粗条显示分叉或控制连接。例如,演出安排好後,剧院就可以开始宣传、购​​买剧本、聘请艺术家、搭建布景、设计灯光和制作服装,所有这些都可以同时进行。但是,在开始排练之前,必须订购脚本并聘请艺术家。

活动图有助於理解系统的高级执行行为,而无需涉及协作图所需的消息传递的内部细节。

活动图示例:计划表演

运输流程

以下示例描述了订单处理的业务流活动。在下图中,请求的订单是活动的输入参数。接受订单并填写所有必需信息後,接受付款并发货。 活动图示例

示例 – 活动图 – 业务提案流程

活动图还可用於描述业务中的角色和职责范围——换句话说,谁负责在业务中做什麽。角色和职责范围记录为活动图中的列(UML 泳道)。泳道显示哪些业务人员参与了工作流的实现

此活动图记录了企业如何执行提案流程,具有三个职责范围(客户销售界面、提案所有者和报价所有者) 活动图示例:商业提案

更多类图示例:

示例 1:文章提交流程

活动图示例

示例 2:多维泳道

UML 2.0 将这种分区功能扩展到活动图的多个维度,并提供了额外的表示法,以便可以用它们所属的分区的名称来标记各个动作。

下图显示了根据 UML 2.0 出现的多维泳道示例,其中动作根据位置和职责进行分组。

活动图示例:多维泳道


通过研究不同应用程序的更多示例,您可以更详细地了解活动图。VisualParadigm Online是一个免费工具,允许您立即编辑和修改示例,无需事先注册。如果你喜欢它,你可以永远免费使用它!


<<:  [C#] 产生 MSSQL Table DML (SELECT, INSERT, UPDATE, DELETE) SQL 语法

>>:  [Q1][STM32G4系列] TIMER观察 - 使用TIMER触发ADC,透过DMA方式结合

Laravel Middleware 实作 Signature Verification

延续昨天,我们来看可以怎麽在 Laravel 框架下实作签证的验证。 What is middlew...

Day 01:前言

先来自我介绍一下好了,我是刚转职踏入软件业的全端菜鸟工程师,也是第一次参加铁人赛。 相信许多还在努力...

延长赛:码农最後的哄擡价格,高级操作:说出一口聚合分析(下)

没想到有生之年也会遇到必须写延长赛的日子 太失策了 但没写就有个东西卡在那的感觉 真是不苏胡,只好默...

【从零开始的 C 语言笔记】第五篇-基本资料型态

不怎麽重要的前言 上一篇我们介绍的运算子跟运用的方式,不晓得大家有没有比较理解了呢,也可以自己多尝试...

[Day 14] 表格图页面建立

 这篇主要是根据网路上的 Code 建立的(其实是看书学的),主要是用来了解 UITableView...