のフロー図を作成しようとしていAASM
ます。多くの状態と各状態の多くのイベントを持つステート マシンがあります。AASM
ステート マシンの定義からマシンを視覚化するのは困難です。これを行うには、次の3つの方法が必要です。
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
どんなに複雑なステート マシンでも機能するコード ブロックを使用して、このようなテーブルを生成するにはどうすればよいでしょうか。