Workflow patterns over a monad for thread state logging & recovery.
Transparent support for interruptible computations. A workflow can be seen as a persistent thread that executes a monadic computation. Therefore, it can be used in very time consuming computations such are CPU intensive calculations or procedures that are most of the time waiting for the action of a process or an user, that are prone to comunication failures, timeouts or shutdowns. It also can be used if you like to restart your program at the point where the user left it last time . . The computation can be restarted at the interrupted point thanks to its logged state in permanent storage. The thread state is located in files by default. It can be moved and continued in another computer. Besides that, the package also provides other higher level services associated to workflows: Workflow patterns, and a general configuarion utility, workflow observation events and references to the internal state. The state can be stored maintaining memory references (using the RefSerialize
package), so that it is possible to track the modifications of a big structure (for example a document) along the workflow execution.
See Control.Workflow
for details
In this release: * Adaptation for MonadMask instance introduced in the package exceptions-0.6