我该如何处理UML状态机转换中(作为守卫条件)多个具有不同布尔表达式的条件? 示例: 在此示例中,我想在从“登录”到“已登录”的转换中添加多个条件(例如“尝试次数<3”),如注释所述。 如何符合UML标准处理此问题?
简单来说(为了聚焦于所需步骤) 在Guard中放置一个布尔条件,就像上面的示例一样。这可以是任何文本。您可以编写C样式或纯文本。我不确定这里是否适用OCL,但那只是学术目的(我的观点)。 N.B. 您的图表显示Tries = 3,这也应该是一个Guard(即[Tries = 3]),而不是一个Name。
这里有几个选择: 您的守卫条件可以在“[]”中组合多个检查,就像您在注释中所做的那样。 您可以在相同的两个状态之间进行多个转换,每个转换都有自己的条件。 您可以在状态中设置子状态。因此,在您的示例中,这三个状态可以位于“正常操作”的超级状态中 - 您可以通过其他文档或注释进一步定义该状态。 所有这些都是有效的UML语法。但请注意,仅因为某个东西是有效的并不意味着它将在您的编辑器中得到支持。例如,许多年过去了,大多数序列图功能才能在编辑器中使用...