UML状态机:转换选择

时间:2015-02-24 20:48:17

标签: uml state-machine

我正在尝试收集信息,以便能够为UML状态机编写正确的转换选择算法。

UML超结构规范(15.3.12 StateMachine)陈述

  

只能在相互正交的区域中发生转换。

“相互正交”是否意味着这些区域处于相同的嵌套级别?

  

对于给定级别的每个状态,将评估所有原始转换以确定它们是否已启用。

这听起来像他们必须处于相同的嵌套水平。对?因为如果在某个嵌套级别上找到转换,则搜索结束...

对我来说,“过渡选择算法”再次对我来说并不完全清楚:

  

唯一的重要问题是在所有级别上解决跨越正交状态的转换冲突。这通过在每个正交中终止搜索来解决   状态一旦在其任何一个组件内部发生转换就被触发。

为了使这更具吸引力,我创建了2个模型:

模型1

Model 1

模型2

Model 2

活动状态配置:

State1,State3,State4,State7

示例1a

如果事件Event1转换为火?

一个。只有从State7到State 5的那个开火吗?

湾或者然后从State3到State8?

两种变体都会在合法的活动状态配置中产生。 但我的理解是,a是正确的

示例1b

模型2相同。

示例2a

如果事件Event2过渡了吗?

一个。只有从State7到State 5的那个开火吗?

湾或者然后从State3到State2?

在这种情况下,我会说b会导致非法的活动状态配置。

这是否意味着模型格式不正确或只会触发其中一个过渡?

示例2b

模型2相同。有什么不同吗?

1 个答案:

答案 0 :(得分:1)

我认为相互正交意味着过渡的副作用对彼此没有影响。

因此,在任何一个图中,由Event1触发的转换可以被认为是相互正交的,因为转换都包含在[A]和[B]中,并且可以同时触发。事件2不能从[A]中转换为A和State1(因此也是[B])。