Definition of Terms

Workflow Engine

Implementation and coordination of processes (i.e. business processes). Therefor:


The controller is the execution unit. It is managing the subjects, executing activites, calling listeners, listening to events, handling timeouts, logging, etc.


A loosely coupled collection of activities, which are executed on a subject (proposal, application, reclamation, ..) depending on its state.


An activity is an isolated task (transaction), executed on a subject. The activity obtains information from the subject and / or adds information to the subject and interacts with the environment. If the execution of an activity executes incompletely or with errors, it will be reexecuted after a delay. A distinction is drawn between synchronous and asynchronous activities.

Synchronous Activity

A synchronous activity is invoked by the controller, as soon as its preconditions are met. The result is available immediately.

Asynchronous Activities

If the preconditions of an asynchronous activity are met, it is enlisted for asynchronous execution. An actor (user / other process / event) may fetch the subject from the list, manipulate it and announce the change at any time.


An event is basically an asynchronous activity without a precondition. It is executed by an external trigger, for example a scheduler timeout.


A listener is basically a synchronous activity without a postcondition. It is called by the controller, when its preconditions are met. Listeners can destroy the subject.

Activity List

There is an activity list for every asynchronous activity. It contains a list of all subjects which are known to meet the preconditions of the respective activity.


Assignment of asynchronous activities to actors. A actor is normally defined as a union of one or more activity lists with a filter downstream.


The subject matter. For example a proposal, reclamation, order .. whatever. The subject contains the state. It runs throw the process and is enriched with more and more information. Activities are performed on a subject.


The controller only knows the ids of the subjects. It is the responsibility of the loader to load the subject by an id from an arbitrary persistence store.