hisma library

Hisma, a hierarchical state machine.

Hisma provides a declarative hierarchical state machine implementation that loosely follows the UML State Machine specification that is in turn based on Harel's statechart.


Represents an action with its description.
BaseEntryPoint<E, T, S>
Base class for all entry points.
BaseState<E, T, S>
Base class for all states.
EntryPoint<E, T, S>
Enclosing region in parent machine will map a Trigger to the EntryPoint in the child machine.
ExitPoint<E, T, S>
Enclosing region in the parent machine will map this ExitPoint into an event in the parent machine.
FinalState<S, E, T>
HistoryEntryPoint<S, E, T>
Helper class to hold both the monitor and the returned Future value of its notifyCreation method. It is used in notifyMonitors to send state change notification only after the notifyCreation was completed.
PseudoState<E, T, S>
Base class for all pseudo states (vs regular states).
Region<S, E, T, SS>
Region represents one child machine (sub-machine) of the enclosing state together with the corresponding connection points: EntryPoints and ExitPoints.
RegularState<E, T, S>
Base class for regular states (vs pseudo states).
State<E, T, S>
Represents a state in the state machine.
StateMachine<S, E, T>
State machine engine S State identifier type for the machine. E State transition identifier type. T Transition identifier type. strict enables or disables strict mode. See StateMachine.strict for more details.
Represents a transition including the corresponding guard and priority to this target and the action that happens at the transition. S State identifier type.
Trigger<S, E, T>
This class represents the transition that is unique as it happens from state A to state B at E event when its guard and priority selects it from the list of transitions on E.


ActionFunction = FutureOr<void> Function(StateMachine machine, dynamic arg)
EventTransitionMap<E, T> = Map<E, List<T>>
GuardFunction = FutureOr<bool> Function(StateMachine machine, dynamic arg)
MonitorGenerator = Monitor Function(StateMachine)
OnErrorActionFunction = FutureOr<void> Function(StateMachine machine, OnErrorData data)
RegionList<S, E, T> = List<Region<S, E, T, dynamic>>
StateMap<S, E, T> = Map<S, BaseState<E, T, S>>
TransitionMap<T, S> = Map<T, Edge>