Skip to content

Sample showing how to use stateless4j library in your project

License

Notifications You must be signed in to change notification settings

stateless4j/stateless4j-sample

Repository files navigation

Stateless4j Example

Sample

This is example of a state machine created using stateless4j library.

This example models a simple jukebox.

Image of Yaktocat

The above diagram encoded using stateless4j API:

 var config = new StateMachineConfig<State, Trigger>();

 config.configure(State.IDLE)
         .permit(Trigger.COIN_INSERTED, State.SELECTION);

 config.configure(State.SELECTION)
         .onEntry(Main::showSongsList)
         .onExit(Main::hideSongsList)
         .permit(Trigger.START, State.PLAYING, Main::consumeCoin)
         .permit(Trigger.CANCEL, State.IDLE, Main::returnCoin);

 config.configure(State.RUNNING)
         .onEntry(Main::showTimer)
         .onExit(Main::hideTimer)
         .permit(Trigger.STOP, State.IDLE);

 config.configure(State.PLAYING)
         .substateOf(State.RUNNING)
         .onEntry(Main::playSong)
         .permit(Trigger.PAUSE, State.PAUSED);

 config.configure(State.PAUSED)
         .substateOf(State.RUNNING)
         .onEntry(Main::pauseSong)
         .permit(Trigger.RESUME, State.PLAYING);

Refer to full example source code

Diagram

Diagram is created using PlantUML. You can install PlantUML plugin for JetBrains IDEA to enjoy real-time preview. See top of Main class.

Licence

Apache License, Version 2.0

About

Sample showing how to use stateless4j library in your project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages