blissed is a very small framework to assist in
the creation, management and execution of processes and states.
blissed is not intended to be useful on its own,
but rather may support a larger workflow system or other process-based
application. To allow it to be easy to integrate with other projects, a
Jelly
tag library is provided.
blissed is effectively a state-machine framework.
A state-machine typically models some sort of process, from the
business process of approving a loan to the lower-level process
of matching a string of characters against a regular-expression.
Each state represents an activity to be performed. Each state
may have multiple transitions, or directed links, to other states.
The transitional links may be guarded so as to only open under
certain circumstances.
blissed has direct representations of processes,
states and transitions by the way of the
Process,
State
and
Transition
classes.
Each Transition may be guarded by an implementation of
the Guard
interface.
There may be several instances of a process occuring simultaneously,
each within a different context. A loan application may be considered
the context of a process instance, as might a string of characters to
be matched against a regular-expression.
blissed provides a
ProcessContext
class for maintaining the context of a given process instance
including current state within a process and any process-specific
data an application associates with the process instance.