在UML状态图中具有多个事件的一个转换

时间:2016-10-30 09:59:00

标签: uml diagram transitions state-diagram

我们在学校里学习行为状态图的转换有语法:

  

事件列表[保护条件] /行动列表

但我在Internet上找不到任何使用多个事件转换的例子。真的有可能吗?如果是,它的表现如何?是否意味着当其中一个事件发生时(当然条件得到满足)实现了交易?

2 个答案:

答案 0 :(得分:5)

是的,转换可以由列表中的许多事件之一触发。您可以使用这样的构造来避免状态之间的多条线,从而形成更整洁的图表。

以下是2.5规范所说的内容:

  

14.2.3.9.2启用转换

     

当且仅当:

时启用转换      
      
  • [。 。 。 ]

  •   
  • 过渡的至少一个触发器的事件与调度的事件事件的事件类型相匹配。

  •   

这些逻辑OR'ed转换在文本上指定为转换上的逗号分隔列表,如§14.2.4.9中所述:

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]

答案 1 :(得分:1)

不幸的是,UML规范在这方面并不具体(我想,但Jim有正确的答案)。无论如何:

  

14.2.4.9过渡

     

Transition的默认文本表示法由以下BNF表达式定义:

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
     

触发器的标准符号(参见子条款13.3.4)在哪里,是一个保护的布尔表达式,而optional是一个表达效果的表达式,用一些特定于供应商或标准的文本表面语言编写的行为(参见第16.1)款。触发器可以是任何标准触发器类型。 SignalEvent触发器和CallEvent触发器无法通过语法区分,必须通过其他地方的声明进行区分。

规范中还有其他地方以类似的方式出现此段落,但没有解释如何处理多个触发器。我假设它是OR条件。但这只是一个假设。唉,既然你没有见过例子(我也没有),这可能是一个未知的事实。只是不要使用它 - 这确实可能;-)如果你碰巧找到一个例子,只要问作者他的意思。 UML是为了彼此交谈。