我对UML状态机图有疑问。
根据UML 2.5规范,“ 14.2.3.4.5进入状态”,第19页。 307f。
显式条目:如果传入的Transition或其延续在组合状态的直接包含的子状态上终止,则该子状态变为活动状态,并且其条目Behavior在执行包含组合状态的条目Behavior后执行。如果Transition在间接(深度嵌套)子状态处终止,则此规则将递归应用。
让 e 为我们的显式输入,这意味着在给定情况下,将执行 A1 (即 x )的输入活动在 A (是 y )进入活动之前,对吗?还是相反?
谢谢。
答案 0 :(得分:4)
让我们作为显式输入,这意味着在给定情况下,A1(即x)的输入活动在A(即y)的输入活动之前执行,对吗?还是相反?
否,这是相反的情况(其条目行为是在执行包含组合状态的条目行为之后执行的),因此 x 在 y
之后执行这是合乎逻辑的,您先输入 A ,然后再输入 A1 (先进入建筑物,然后再将公寓进入建筑物)。在退出时,这当然是相反的,您先从 A1 退出,再从 A
退出答案 1 :(得分:3)
子状态输入活动在包含状态输入活动完成后运行。因此,最外部的状态进入活动首先运行,最后内部的运行。
因此,如果我们具有状态x,y,z,其中x包含y且y包含z和Ax,则Ay和Az分别是x,y和z的输入活动,那么当转换终止于z时,执行顺序为Ax => Ay => Az。
请注意,退出活动的执行顺序相反(从最里面的状态开始,从最外面的状态开始)