Patent ID: 7421546

Claim:
A state engine system, the system comprising: a. a CPU; b. a memory operatively connected to the CPU, the memory including a program adapted to be executed by the CPU and the CPU and memory cooperatively adapted for managing a plurality of objects stored in a database, whose behavior can be modeled by means of a state diagram reacting on external events which occur in a non-deterministic order; c. a code segment embodied on a computer-readable storage medium configured and adapted for creating, storing and maintaining state diagram templates in a database, the database comprising all states available for an object, the possible state transitions, the events which cause state transitions, and the actions which occur upon state transitions: i. wherein there is at least one event causing each state transition; and ii. wherein the actions which occur upon a state transition are dependent upon the event that caused the transition; d. a code segment embodied on a computer-readable storage medium configured and adapted for creating a new instance of a state diagram for each new object and maintaining its current state in the running state diagram; e. a code segment embodied on a computer-readable storage medium configured and adapted for receiving notification of an event and applying it to the relevant running state diagram; f. a code segment embodied on a computer-readable storage medium configured and adapted for causing a state transition upon receiving notification of an event; g. a code segment embodied on a computer-readable storage medium configured and adapted for causing the occurrence of one or more pre-determined actions triggered by a state transition, wherein one of the pre-determined actions is the initiation of a timer, wherein the timer is configured to cause an action to occur after a pre-determined time; and h. a code segment embodied on a computer-readable storage medium configured and adapted for immediately prior to causing the occurrence of the one or more pre-determined actions, querying whether the state of the object has changed and where the state of the object has changed, canceling one or more of the pre-determined actions, wherein querying whether the state of the object has changed occurs from about one second to about five minutes prior to causing the occurrence of the one or more pre-determined actions.