1
我試圖建立一個AASM
的流程圖。我有一個狀態機,每個狀態都有很多狀態和很多事件。很難從AASM
狀態機定義中看到機器。要做到這一點,我想要三種方法如下,是否有一個AASM方法來獲得下一個狀態,如果一個事件被觸發而沒有在rails中實際觸發事件
1)返回所有狀態的方法。這已經由AASM
提供,即aasm.states.map(&:name)
2)返回特定狀態的所有事件的方法。 AASM
已經提供了返回來自當前狀態的所有事件的方法,即aasm.events.map(&:name)
。這幾乎是我想要的,但我想將狀態傳遞給方法。我不想使用當前狀態,而是使用通過的狀態。
3)除了狀態和事件的方法。該方法應該在調用時返回下一個狀態,而不實際更改狀態機中的任何內容。類似這樣的,
next_1_1 = next_state(state1, event1)
next_1_2 = next_state(state1, event2)
next_1_3 = next_state(state1, event3)
next_2_4 = next_state(state2, event4)
next_2_5 = next_state(state2, event5)
next_2_6 = next_state(state2, event6)
是否有類似的東西可用?有另一種方法來實現我想要的嗎?
更新
基於@ puneet18答案,我的狀態圖將如下
State Event next state
----------------------------------------
:not_started :start :in_progress
:in_progress :finish :finished
:reassign :reassigned
:finished :reassign :reassigned
我怎麼會產生這樣一個表的代碼塊,將任何國家機器正常工作,不管它有多複雜?