1. A method for implementing scalable, fault-tolerant finite state machines, comprising: receiving an event associated with an information technology element; identifying an entry associated with the information technology element in a finite state machine states table stored in persistent storage; updating the entry as locked in the finite state machine states table and storing the updated finite state machine states table in the persistent storage; creating a finite state machine instance to process the event and initializing it with information from the finite state machine states table; invoking an execute operation of the finite state machine instance, wherein the finite state machine instance executes state transitions associated with the information technology element, starting from the point where it finished execution when it was last invoked; logging data in the persistent storage indicating that a workflow is to be scheduled before submitting the workflow; logging data in the persistent storage indicating that the workflow is submitted after scheduling the workflow; and after the finite state machine instance finishes, updating the entry as unlocked, and also storing current state information to be used in the next execution, in the finite state machine states table.