This software is an implementation of an extensible dynamic configurable finite state machine. The configuration of the state machine is not compiled, but loaded at the runtime from a file. The manipulation of the states, transitions etc at runtime is also possible. Third party developers may extend all components of the FSM to meet their specific needs.
The FSM consists of a number of states. One of them is defined as the initial state. Each state is associated with a number of transitions. If a certain event occurs, a transition that is associated with this event causes the FSM to change its state. Such a transition may be limited by a set of conditions, that have to be fulfilled before the transition is activated. E.g. a transition that is associated with the mouse click event may be limited to a predefined display area. Each transition may be associated with a number of action, that are executed, when the transition occurs. Also may a state be associated with a number of actions that are executed each time the FSM enters or leaves the state. The mightiness of the FSM was extended by introducing variables. A transition may be associated with a value range of a variable as an additional condition and is only executed when the variable value is within the specified range. The value of a variable is manipulated by special actions. The core of the FSM consists of a small set of configurable actions, events and conditions, that can be extended by the user. Such extensions are dynamic link libraries, that are independent of the core library and are loaded at runtime. The file format is defined by XML.