2016-03-04 49 views
0

我努力堅持我的狀態機遵循可用的配方和示例。我正在使用主分支,我的狀態機使用分層狀態,區域和正交狀態。我遵循的第一個例子是spring-statemachine-samples/persist,但它似乎只處理基本的FSM。我嘗試的第二個是LocalStateMachineInterceptor但id似乎沒有與分層狀態一起工作。此外,我無法找到任何方式通過StateMachinePersist堅持歷史狀態。創建一個StateMachineInterceptor來堅持StateMachineContext

是否存在一個具有持久性的複雜FSM的例子?

+0

堅持,關於歷史狀態的問題。當我爲它創建了一個#182並開始處理它時,我無法弄清楚如何實際使用它與持久性。由於歷史狀態是一個暫態和僞狀態,因爲它只是跟蹤上一個已知狀態,所以不能真正將機器重置爲該狀態,因爲它唯一的工作是立即進入其最後已知狀態。那麼你是否介意通過堅持歷史狀態來闡述你的意思? –

+0

如果在當前狀態中可用的轉換之一具有_HISTORY_僞狀態作爲目標時恢復FSM,則觸發此類事件應將FSM移至先前的狀態。這是目前實施(我認爲)查看存儲在HistoryPseudoState中的信息,在保存/恢復時丟失 –

+0

好吧,我認爲在這裏還是做了一些工作,但我只是增強了堅持歷史記錄的功能。您可以按照#182中的更改進行操作。對不起,我原來的評論,你是「抱錯了」,你是對的:)謝謝! –

回答

0

我必須說實話,當事情變得更加複雜時,持續性是樣本和文檔中一個相對未知的主題。這是我目前正在努力使它更容易,因爲作爲用戶你不應該關心,因爲應該有一個相對乾淨的API來做到這一點。所以請繼續關注這些。

話雖如此,在我們弄清楚代碼之前,

StateMachinePersist導致StateMachineContext,並在測試中有一些代碼,即StateMachineResetTests,它顯示了一些方法來做這些事情。還有一個問題gh127,我在那裏寫了一些關於重置機器的內部機制,這是持久性所做的。

歷史狀態,是的,這是我的不好,由於某種原因它已經從我的雷達中滑落。感謝您指出!爲它創建了一個問題gh182