2013-02-04 121 views
3

我想知道我是否正確理解了ShallowHistory語法。UML狀態機淺歷史

這是使用它的正確方法嗎?

enter image description here

在UML規範。據說它可以用來代替最初的僞狀態。我猜在這種情況下,將無法重置State1的內存,而在這種情況下,State0的轉換總是從State1.1開始。我對嗎?

回答

1

您的解釋看起來正確。從上部結構:

在進入複合狀態,下面的情況下是有區別的:

•缺省條目:圖形上,這是通過在複合狀態的外邊緣終止呼入過渡指示。在這種情況下,應用默認的條目規則(請參閱語義變化點(默認條目規則))。

而且

語義變化點(默認項規則)

如果過渡終止於一個封閉的狀態,封閉的區域不具有初始僞狀態,這種情況的解釋是一個語義變化點。 在一些解釋中,這被認爲是不合格的模型。也就是說,在這些情況下,初始假狀態是強制性的。另一種解釋允許這種情況,這意味着,當這種轉換被採用時,狀態機保持在複合狀態,而不進入任何區域或它們的子狀態。

最後:

淺歷史條目:如果轉換一個淺歷史僞狀態終止,活動子狀態變得之前與這個詞條最近最活躍的子狀態,除非最近的活動子狀態最終狀態還是第一次進入此狀態。在後兩種情況下,輸入默認的歷史記錄狀態。這是作爲源自歷史假設的過渡目標的子狀態。 (如果沒有指定這種轉換,則情況不明確,處理未定義。)如果由歷史確定的活動子狀態是複合狀態,則它會繼續執行其默認條目 。

要注意,從最後一段,似乎你應該始終有從H僞狀態的轉換,至少要由initial指出僞狀態相同的狀態,否則,你可能有一個不明確的機器。

我沒有找到它說你可以使用H *代替初始僞狀態的地方。你在哪裏看到這個?