AASM
에 대한 흐름도를 작성하려고합니다. 상태가 많은 상태 시스템과 각 상태에 대해 많은 이벤트가 있습니다. 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)
이와 비슷한 것이 있습니까? 내가 원하는 것을 구현할 다른 방법이 있습니까?
State Event next state
----------------------------------------
:not_started :start :in_progress
:in_progress :finish :finished
:reassign :reassigned
:finished :reassign :reassigned
어떻게 내가 어떤 상태 기계에 대한 작동 코드 블록으로이 같은 테이블을 생성 할 다음과 같이 @ puneet18 답변에 따라
업데이트
, 내 상태 다이어그램은 것 얼마나 복잡합니까? 코드 아래