状态图中的转移顺序是什么?如何使用历史伪状态?

What is an order of transitions in state diagram? How to use history pseudo-states?

我读了很多关于它的内容,但仍然不确定状态执行的顺序(在复合状态中)以及深度和浅层历史究竟是如何工作的?有人可以帮助我吗? 我有一个例子,我不确定如何解决,这里是:

如有任何帮助,我将不胜感激!

问题一:

... not sure .. how exactly deep and shallow history works?

答案一:

请注意:

A shallow history is indicated by a small circle containing an "H". It applies to the state region that directly encloses it.

Shallow history pseudostate represents the most recent active substate of its containing state (but not the substates of that substate). ...

Source: http://www.uml-diagrams.org/state-machine-diagrams.html#shallow-history-pseudostate

问题二:

... I'm not sure if I always should start from initial point, which is outside of all composites?

答案二:

是的。您从根状态的初始伪状态(在本例中为 A)开始。

示例:

对于给定的 state-chart 和事件链,您将得到以下结果(使用 Rhapsody 模拟):

默认转换到 A 后

  • x 的值(过渡到 A):x = 3
  • x 的值(条目 A):x = x * 2 = 6
  • 新状态:A

默认转换为 A::B

  • 新状态:A::B
  • x 的值:x = 6

在 e1 之后

  • x 的值(条目 A::C):x = x + 1 = 7
  • 新状态:A::C

默认转换为 A::C::G

  • x 的值(条目 A::C::G):x = x + 1 = 8
  • 新状态:A::C::G

e3

之后
  • x 的值(退出 A::C::G):x = x - 2 = 6
  • x 的值(条目 A::C::H):x = x / 2 = 3
  • 新状态:A::C::H

e4

之后
  • x 的值(条目 A::C::G):x = x + 1 = 4
  • 新状态:A::C::G

e6

之后
  • x 的值(退出 A::C::G):x = x - 2 = 2
  • x 的值(退出 A::C):x = x - 1 = 1
  • x 的值(出​​口 A):x = x - 1 = 0
  • x 的值(过渡到 Y):x = (x * 4) + 2 = 2
  • 新状态:Y

e7

之后
  • x 的值(条目 A::C 参见上面的注释):x = x + 1 = 3
  • x 的值(条目 A::C::G):x = x + 1 = 4
  • 新状态:A::C::G

e4被丢弃

e7 之后

x 的值(退出 Y):x = x / 2 = 1

x 的值(条目 A):x = x * 2 = 2

x 的值(条目 A::C 参见上面的注释):x = x + 1 = 3

x 的值(条目 A::C::G):x = x + 1 = 4

新状态:A::C::G