在 UML 序列图中 alt / opt 中途中断/停止执行

问题描述 投票:0回答:3

在 UML 序列图中 - 如果中途满足条件则流程应停止,那么如何用备用/可选片段最好地表示它?

即- 如果不满足停止条件,则流程将继续执行几个步骤。 备用片段是否应该覆盖自停止条件以来的所有步骤,使所有经过它的步骤成为备用片段的一部分,或者是否有符号来处理小备用片段内的停止(仅限于条件)?

uml sequence diagram alternate
3个回答
17
投票

针对这种情况有三种选择。我用一个图表来说明每个组合片段应该如何使用。实际行为通过交互引用隐藏(normalFlow 用于通常应执行的流程,breakFlow 用于在需要中断时应发生的任何流程)。

第一个解决方案是最方便的 - 它完全覆盖您的箱子,您也可以使用防盗罩的正面版本。然而,它们每个都为您提供了有效的可能性。

  1. 打破组合片段

当满足break组合片段并且其保护条件为真时,只有该片段仍然被执行,然后交互(流)的执行停止。如果不满足条件,则省略组合片段并继续正常流程。这正是您所描述的情况。在这种情况下,您可以将在中断条件下不应执行的消息放在中断组合片段之后。

  1. 选择组合片段

当满足 opt 组合片段时,仅当保护条件为 true 时才会执行。无论条件如何,流程的其余部分都会继续。 您可以将仅当不满足中断条件时才继续的流程部分放入 opt 组合片段内。 opt 片段应该有一个与流应停止的条件相反的保护。如果在中断时发生任何其他操作,则应将它们放在 opt 组合片段之后。

  1. Alt组合片段

当满足 alt 组合片段时,将评估其守卫条件,并且仅执行守卫评估为 true 的最终一个片段。还可能存在这样的情况:没有一个守卫评估为真并且在这种情况下没有片段被执行。无论如何,组合片段之后的流程都会正常执行。 在这种情况下,您最好放置两个片段,一个具有正确的操作防护,第二个具有应导致中断的条件。将正常流程放入第一个片段中,并将发生中断时发生的任何情况放入第二个片段中。


4
投票

您可以使用

opt
片段来简化整个过程:

有人可能会开始争论这在语法上是不正确的,但它传输了消息(我猜)。这才是最重要的。

根据我个人的经验:尽可能少地使用片段。而是分割您的场景以专注于某些重要方面。 SD 是系统的快照,您希望在其中概述正在发生的事情,而不是包含每个可能的猫和狗踪迹的详细路线图。


0
投票

在接受的答案中,选项#1和#3在行为上是等效的并且正确地解决了问题,选项#1理所当然地更优雅。

然而,选项#2 有不同的行为。如果继续条件为真,除了执行normalFlow之外,breakFlow还会被执行,但实际上不应该。该行为在技术上等同于其他两个选项的唯一情况是如果breakFlow 为空。

我没有声誉点来为答案添加评论。

© www.soinside.com 2019 - 2024. All rights reserved.