An event engine enables application developers to define finite state
machines (FSMs) that they want to implement, via a data-driven approach
as opposed to having to hardcode the FSMs. The event engine has three
notable characteristics: computations may be associated with FSM state
transitions, the set of computations that is associated with each
transition is specified by data (illustratively an XML document), and the
particulars of the computations are defined and handled by plug-ins, each
with the same interface.