1. A method of performing an asynchronous, interactive workflow, the method comprising: generating, with a computer, a workflow comprising one or more tasks; receiving, with the computer, user context from an at least one user, wherein a first workflow instance is generated from the workflow and based in part on the user context, the first workflow instance associated with the at least one user; determining, with the computer, that the first workflow instance is in a state that a workflow service capable of accessing and executing the first workflow instance can execute at least a portion of the one or more tasks automatically, without user interaction, before executing the at least a portion of the one or more tasks; executing, with the computer, the at least a portion of the one or more tasks of the workflow automatically, without user interaction, in response to a trigger; detecting, with the computer, that a current task of the one or more tasks of the workflow requires user interaction; in response to detecting, with the computer, that the first workflow instance requires user interaction, placing the first workflow instance in a persisted state, wherein the persisted state indicates the status of the current task as awaiting user interaction; adding, with the computer, the current task to a to-do list of tasks requiring user interaction in response to determining that the current task requires user interaction; determining, with the computer, that one of the at least one user associated with the workflow has logged on; presenting, with the computer, at least one task from the to-do list to the one of an at least one user responsive to determining that one of the at least one user has logged on; receiving, with the computer, the required user interaction; and executing, with the computer, the at least one task from the to-do list based on the received user interaction.