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 communication 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 configuration 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.