This appendix provides generic information for a developers who may want to contribute or other people who want to understand how state machine works or what are its internal concepts.
StateMachineModel
and other related SPI classes are an abstraction
between various configuration and factory classes. This also allows
easier integation for others to build state machines.
As shown above a state machine can be instantiated by building a model using configuration data classes and then asking a factory to build a state machine.
// setup configuration data ConfigurationData<String, String> configurationData = new ConfigurationData<>(); // setup states data Collection<StateData<String, String>> stateData = new ArrayList<>(); stateData.add(new StateData<String, String>("S1", true)); stateData.add(new StateData<String, String>("S2")); StatesData<String, String> statesData = new StatesData<>(stateData); // setup transitions data Collection<TransitionData<String, String>> transitionData = new ArrayList<>(); transitionData.add(new TransitionData<String, String>("S1", "S2", "E1")); TransitionsData<String, String> transitionsData = new TransitionsData<>(transitionData); // setup model StateMachineModel<String, String> stateMachineModel = new DefaultStateMachineModel<>(configurationData, statesData, transitionsData); // instantiate machine via factory ObjectStateMachineFactory<String, String> factory = new ObjectStateMachineFactory<>(stateMachineModel); StateMachine<String, String> stateMachine = factory.getStateMachine();