Event Driven Architecture
AgilePoint uses an event driven architecture. Events are executed, the resulting state is recorded, and the objects are released to free server memory and CPU cycles. Another AgilePoint design feature is that execution of events is not limited to process based threading. If a process has several activities assigned to different participants, the events of the activities can execute in different threads.
AgilePoint maintains the state of all workflow objects in the database and only hydrates them (creates the appropriate workflow object on the AgilePoint server) when an event is generated from a call to the engine or a timed event is created by the AgilePoint Timer service. The AgilePoint Timer service monitors the database and creates events based on date and time of workflow objects. An example of a timed event is an activity that has not been completed by its due date. An event will be fired to change its status from "Assigned" to "Overdue". Concurrently, if a process instance is in idle state (e.g. a task is assigned to a user and is waiting for the user's response, a call to an asynchronous Web service, or waiting for a sub process to complete) it does NOT consume any memory or CPU/thread. As a result, more often than not, the process is in idle state for human oriented workflow.