问:如何处理 UML 状态机转换中的多个条件
Q: How to handle more than one condition in a UML state machine transition
如何在 UML 状态机转换(作为守卫)中处理多个条件(具有不同的布尔表达式)?
示例:
在这个例子中,我想在从 "logging in" 到 "Logged In" 的过渡中添加多个条件 (Tries < 3),如注释中所述。
如何处理这个 UML 兼容?
这里有几个选项:
- 您的警卫条件可以在“[]”中组合多项检查 - 就像您在注释中所做的那样。
- 您可以在相同的两个状态之间进行多次转换,每个状态都有自己的条件。
- 您可以在州内拥有州。因此,在您的示例中,这三个状态可以在 'Normal Operation' 的超状态内 - 然后您可以在其他文档中或通过注释进一步定义。
所有这些都是有效的 UML 语法。但请注意,仅仅因为某些内容有效并不意味着它会在您的编辑器中得到支持。例如,序列图的大部分功能在编辑器中可用多年之后...
简单地说(并专注于所需的步骤)
在 Guard
中放置一个像上面那样的布尔条件。这可以是任何文本。您可以编写 C 风格或纯文本。我在这里不确定 OCL,但无论如何这是出于学术目的(我的意见)。
N.B。您的图表显示 Tries = 3
也应该是 Guard
(即 [Tries = 3]
)而不是 Name
.
如何在 UML 状态机转换(作为守卫)中处理多个条件(具有不同的布尔表达式)?
示例:
在这个例子中,我想在从 "logging in" 到 "Logged In" 的过渡中添加多个条件 (Tries < 3),如注释中所述。
如何处理这个 UML 兼容?
这里有几个选项:
- 您的警卫条件可以在“[]”中组合多项检查 - 就像您在注释中所做的那样。
- 您可以在相同的两个状态之间进行多次转换,每个状态都有自己的条件。
- 您可以在州内拥有州。因此,在您的示例中,这三个状态可以在 'Normal Operation' 的超状态内 - 然后您可以在其他文档中或通过注释进一步定义。
所有这些都是有效的 UML 语法。但请注意,仅仅因为某些内容有效并不意味着它会在您的编辑器中得到支持。例如,序列图的大部分功能在编辑器中可用多年之后...
简单地说(并专注于所需的步骤)
在 Guard
中放置一个像上面那样的布尔条件。这可以是任何文本。您可以编写 C 风格或纯文本。我在这里不确定 OCL,但无论如何这是出于学术目的(我的意见)。
N.B。您的图表显示 Tries = 3
也应该是 Guard
(即 [Tries = 3]
)而不是 Name
.