如何在UML状态机转换(作为保护)中处理多个条件(具有不同的布尔表达式)?
示例:
在这个例子中,我想在注释中描述的“登录”到“登录”的过渡中添加多个条件(尝试<3) .
如何处理这个UML兼容?
简单地说(并专注于所需的步骤)
在 Guard 中放置一个类似上面的布尔条件 . 这可以是任何文字 . 您可以编写C样式或纯文本 . 我无论如何都是出于学术目的(我的意见) .
Guard
注:您的图表显示 Tries = 3 ,也应该是 Guard (即 [Tries = 3] )而不是 Name .
Tries = 3
[Tries = 3]
Name
这里有几个选项:
你的守卫条件可以在_1590297中组合多个支票 - 就像你在笔记中所做的那样 .
您可以在相同的两个状态之间进行多次转换,每个状态都有自己的条件 .
您可以在州内拥有州 . 因此,在您的示例中,这三个状态可能在'Normal Operation'的超级范围内 - 然后您可以在其他文档中或通过注释进一步定义 .
所有这些都是有效的UML语法 . 但请注意,仅仅因为某些内容有效并不意味着它会在您的编辑器中得到支持 . 例如,在编辑器中可以获得序列图的大部分功能之前很多年......
2 回答
简单地说(并专注于所需的步骤)
在
Guard
中放置一个类似上面的布尔条件 . 这可以是任何文字 . 您可以编写C样式或纯文本 . 我无论如何都是出于学术目的(我的意见) .注:您的图表显示
Tries = 3
,也应该是Guard
(即[Tries = 3]
)而不是Name
.这里有几个选项:
你的守卫条件可以在_1590297中组合多个支票 - 就像你在笔记中所做的那样 .
您可以在相同的两个状态之间进行多次转换,每个状态都有自己的条件 .
您可以在州内拥有州 . 因此,在您的示例中,这三个状态可能在'Normal Operation'的超级范围内 - 然后您可以在其他文档中或通过注释进一步定义 .
所有这些都是有效的UML语法 . 但请注意,仅仅因为某些内容有效并不意味着它会在您的编辑器中得到支持 . 例如,在编辑器中可以获得序列图的大部分功能之前很多年......