1

我正在尝试为AASM. 我有一个状态机,每个状态都有很多状态和很多事件。从AASM状态机定义中很难将机器可视化。为此,我想要以下三种方法,

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

我将如何生成这样的表格,其中包含适用于任何状态机的代码块,无论它有多复杂?

4

0 回答 0