【问题标题】:Execution Order of Hierarchical State Machine (HSM) Actions分层状态机 (HSM) 操作的执行顺序
【发布时间】:2021-01-22 14:57:25
【问题描述】:

实际上,我想要验证有关 HSM 的执行顺序。 下图是真的吗?

【问题讨论】:

  • 在失分前快速检查作业?

标签: uml diagram state-machine fsm


【解决方案1】:

我想问题是关于图表中存在的独特转换

自我转换

没有到 s2 的过渡,因此在过渡发生时不可能在 s2 中。过渡是外部的,所以 s1ExitAction 然后是 T1TransAction 然后是 s1EnterAction

假设有一个额外的初始伪状态和从它到 s2 的转换,那么执行就是你指定的那个。

如果我们在 s2 中是因为隐藏的转换不是来自隐藏的初始伪状态,那么执行是 s2ExitAction 然后是 s1ExitAction然后 T1TransAction 然后 s1EnterAction

外部转换 A

假设转换发生至少第二次,那么执行就是你指定的那个,否则转换发生在 s1 并且执行是 s1ExitAction 然后t1TransAction 然后 s1EnterAction 然后 s2EnterAction

局部转换 A

假设转换发生至少第二次,或者我们在 s2 因为隐藏的转换,那么执行就是你指定的执行,否则转换发生在 s1 执行是 t1TransAction 然后是 s2EnterAction

外部转换 B

没有到s2的过渡,所以不可能在s2中,然后不可能进行过渡。

假设有一个额外的初始伪状态和从它到 s2 的转换,那么执行就是你指定的那个。

如果我们在 s2 中是因为隐藏的转换不是来自隐藏的初始伪状态,那么执行是 s2ExitAction 然后是 s1ExitAction然后 t1TransAction 然后 s1EnterAction

局部转换 B

没有到s2的过渡,所以不可能在s2中,然后不可能进行过渡。

假设有一个额外的初始伪状态以及从它到 s2 的转换或允许在 s2 中的隐藏转换,那么执行就是您指定的那个。

内部过渡

没有到s2的transition,所以transition发生的时候不可能在s2,那么执行是t1TransAction

假设有一个额外的初始伪状态和从它到 s2 的转换,那么执行就是你指定的那个。

如果我们在 s2 中是因为隐藏的转换不是来自隐藏的初始伪状态,那么执行是 s2ExitAction 然后是 t1TransAction

【讨论】:

  • 谢谢布鲁诺。正如你所说,黄色状态(s2)是活动状态。另一个问题;因为超状态里面只有一个子状态,所以需要init伪状态?
  • @kaernk 我在标准中没有看到如果只有一个子状态,那么就会有一个隐式的初始伪状态和一个到该状态的转换。请注意,在某些图表中,假设当前状态是 s2,因为隐藏的转换不是来自初始伪状态,因此执行不像你说的那样,因为没有理由进入 s2 所以相关的入口动作没有完成
  • @kaernk 要清楚我编辑了我的答案以添加当前状态为 s2 的情况,但不是因为隐藏的初始伪状态和隐藏的过渡,而是其他隐藏过渡
猜你喜欢
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2018-12-28
相关资源
最近更新 更多