我想知道我是否正确理解了 ShallowHistory 语法。
这是正确的使用方法吗?
在 UML 规范中。据说它可以用来代替初始的伪状态。我猜在这种情况下,将无法重置 State1 的内存,而在这种情况下,从 State0 的转换总是从 State1.1 开始。我对吗?
你的解释似乎是正确的。从上层建筑:
进入复合状态后,区分以下几种情况:
• 默认条目:在图形上,这由在复合状态的外边缘终止的传入转换指示。在这种情况下,将应用默认输入规则(请参阅语义变化点(默认输入规则))。
和
语义变化点(默认输入规则)
如果转换终止于封闭状态并且封闭区域没有初始伪状态,则对这种情况的解释是语义变化点。在某些解释中,这被认为是一个格式错误的模型。也就是说,在这些情况下,初始伪状态是强制性的。另一种解释允许这种情况,这意味着,当进行这种转换时,状态机保持在复合状态,而不进入任何区域或其子状态。
最后:
浅历史条目:如果转换在浅历史伪状态上终止,则活动子状态将成为此条目之前的最近活动子状态,除非最近活动子状态是最终状态,或者这是进入此状态的第一个条目。在后两种情况下,进入默认的历史状态。这是源自历史伪状态的转换目标的子状态。(如果没有指定这样的转换,则情况定义不明确,并且未定义其处理。)如果由历史确定的活动子状态是复合状态,则它继续使用其默认条目。
请注意,从最后一段来看,您似乎应该始终从H
伪状态转换,至少到initial
伪状态指向的相同状态,否则您可能有一个定义不明确的机器。
我没有找到它说你可以使用 H* 而不是初始伪状态的地方。你在哪里看到这个?