How hierarchical states work
masterStateless supports hierarchical states (substates). A substate is a state that exists within a superstate. When a state machine is in a substate, it is also considered to be in the superstate.
Key behaviors:
- Use
.SubstateOf(superState)to define a hierarchy. StateMachine.IsInState(state)returnstrueif the machine is in the specified state OR any of its substates.StateMachine.Statereturns the precise current substate.- Entry/Exit events for the superstate are only triggered when entering or leaving the superstate itself, not when moving between its substates.
phoneCall.Configure(stateOnHold).
SubstateOf(stateConnected).
Permit(triggerTakenOffHold, stateConnected).
Permit(triggerPhoneHurledAgainstWall, statePhoneDestroyed)