Skip to content
Nikolaos Pougounias edited this page Jul 29, 2014 · 4 revisions

Introduction

FSM Engine makes it easy to define and execute simple finite state machines, and thus workflows, in your Java applications. It really helps in cases where the behaviour of an object needs to be changed automatically, at runtime, depending on its state.

This library was originally inspired by Harel Statecharts and the State Design Pattern and is implemented by the National Documentation Centre of Greece. Also, it is successfully incorporated in a few production applications, including the National Archive of PhD Theses and the National Interloaning System of Scientific and Technological Libraries.

Purpose

The purpose of this wiki is to describe the concepts and techniques used by the FSM Engine and provide some examples that can help you get started with utilising FSM Engine in your own projects.

Scope

FSM Engine provides a set of reusable Java classes and interfaces that apply the abstract concepts of finite state machines (hence FSM) at the source code level. By extending and implementing those classes and interfaces in your application, you can systematically define how your system reacts to certain events avoiding at the same time cluttered case statements. This is achieved by specifying a set of valid states for an object along with possible transitions between states which are triggered by events. In addition, guard conditions can determine whether a transition should be executed or not and a set of possible actions can be associated with a given transition in order to be fired as a side effect of executing the transition.

Clone this wiki locally