Wednesday, July 27, 2011

Workflow ?

In an ideal world, workflows would not be required. Any business/system transaction could be executed immediately as the mechanism performing the transaction would have immediate/unlimited access to the data produced by sub systems, components and users it requires to perform said transaction.

In a realistic world, this isn't the case and we need a mechanism to perform a transaction over a period of time that can withstand server and/or system restarts. These time delays are generally due to the fact users or systems aren't always immediately available to provide the information required to the mechanism to complete the transaction. To overcome this 'workflows' provide just that - a tool to facilitate transaction state during long running transactions that can withstand server and system reboots.

Workflow should be used to maintain the state of this transaction where the business/system transaction is awaiting data from a sub system/user and no where else.
The ability of the workflow to provide time based execution is an unfortunate and misused side effect. Keep it real and use the right tool for the job.

Chris Rumel