活动图类似於业务工作流程图或简单的流程图,具有更丰富的语义。它描述了系统活动,或进行活动的人,以及这些活动的顺序流程。活动图是与面向对象方法相关的 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 中,对象流转换显示为动作状态和对象之间的虚线箭头。使用对像作为输入的操作状态显示为对象流转换箭头从对象指向操作状态。更新或生成对像作为输出的操作状态显示为对象流转换箭头从操作状态指向对象。
当我们需要在决定控制流之前做出决定时,我们使用决策节点,例如一个传入的转换,以及多个传出的并行转换和/或对象流。
守卫是为了遍历转换必须为真的条件。
UML 2.0 活动建模还支持对象节点。对象节点是一个活动节点,它指示可能处於特定状态的特定分类器的实例可能在活动的特定点可用(例如,作为动作的输出或输入)。对象节点充当特定类型(并且可能处於特定状态)的对象可能流入和流出的容器。
数据存储是持久存储对象的对象的构造型。
泳道活动图将活动分组到泳道列中,这些列包含适合该泳道所代表的类别的所有活动。泳道可以代表许多类别的信息,例如执行活动的参与者(即角色或部门)、活动发生的过程阶段,或者文档创建者认为应该由文档作者强调和传达的任何其他信息。泳道图。由於图表的水平行与游泳池内的泳道在视觉上相似,因此采用术语泳道。
在 UML 中,泳道显示为通过两侧垂直实线与相邻泳道分开的视觉区域,并在顶部标记为负责泳道内动作状态的元素。
当时间表达式为真时,时间事件流动,而事件发生时事件信号流动。沙漏符号可用於表示接受时间事件。
接受事件操作是活动图中业务流程的重要元素。接受动作等待事件发生。接受事件後,将执行来自此操作的流程。
发送信号动作是发送给接受活动的信号,该活动可以做出相应的反应。
活动图用於对描述条件、约束、顺序和并发活动的工作流进行建模。另一方面,用例的目的只是描述功能,即系统做什麽而不是如何完成。因此,简单来说,活动图显示“如何”,而用例显示特定系统的“内容”,因此,活动图通常与用例成对出现。
就UML而言,我们可以将活动图用於以下目的,例如:
注意:活动图可用於说明业务流程(高级实现)到独立算法(底层实现)。
此示例显示了剧院办公室的活动图。此图显示了策划演出所涉及的活动。
活动图有助於理解系统的高级执行行为,而无需涉及协作图所需的消息传递的内部细节。
以下示例描述了订单处理的业务流活动。在下图中,请求的订单是活动的输入参数。接受订单并填写所有必需信息後,接受付款并发货。
活动图还可用於描述业务中的角色和职责范围——换句话说,谁负责在业务中做什麽。角色和职责范围记录为活动图中的列(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 框架下实作签证的验证。 What is middlew...
先来自我介绍一下好了,我是刚转职踏入软件业的全端菜鸟工程师,也是第一次参加铁人赛。 相信许多还在努力...
没想到有生之年也会遇到必须写延长赛的日子 太失策了 但没写就有个东西卡在那的感觉 真是不苏胡,只好默...
不怎麽重要的前言 上一篇我们介绍的运算子跟运用的方式,不晓得大家有没有比较理解了呢,也可以自己多尝试...
这篇主要是根据网路上的 Code 建立的(其实是看书学的),主要是用来了解 UITableView...