Aqueduct

About Aqueduct

Aqueduct is a simple, lightweight state machine library for Java. Many programs, or subsystems within an application, can be described naturally as a state machine or flowchart. This library is intended to simplify the development of such programs.

The library consists of only a few classes and interfaces. The core types in the library are:

State
(Interface) Represents a node in the state machine
StateMachineDescription
(Class) Contains the states and the possible transitions between them
InputSource
(Interface) Provides State objects with the information they need to decide which transition to take
StateMachine
(Class) Holds the notion of a current State for a given StateMachineDescription
StateEventListener
(Interface) Can receive notifications from a StateMachine when a given State is entered or exited
StateEvent
(Class) Contains the notification information sent to a StateEventListener

This library makes heavy use of Java 5's template types. Unlike many other workflow/state machine libraries, it doesn't use XML configuration files to define the state machine transitions.

Examples

I'm working on putting together some example code now, and will add the tutorial once it's finished.

Aqueduct was originally inspired by a program involving record processing from text files. I am currently working on an example program that reads recipes from a text file. I'll add that example and others as I finish them.