Project Description
Codeflows is a free, open source, lightweight .NET class library for programming workflows using your favourite programming language constructs.

Features

Intuitive programming model

With Codeflows, you will use your favourite .NET programming language constructs to program your workflows. For example, when the following codeflow is executed from Start action, it jumps to Step2 and finishes.

    class JumpWithArguments : Codeflow
    {
        public Result Start()
        {
            return Jump<JumpWithArguments>(c => c.Step2("Hola"));
        }

        public Result Step2(string value)
        {
            Debug.WriteLine(value);
            return End();
        }
    }

Persistence

Out of the box SQL server persistence feature allows you to persist the state of long running Workflows. It also supports resuming after failures.

Compensation

Compensation is inevitable when integrating with other systems. Codeflows gives you access to important information do compensating transactions.

Long running timers

Run an action after a given period of time. For example, we can modify our JumpWithArguments Codeflow to run Step2 after 10 minutes as shown below.

    class JumpWithArguments : Codeflow
    {
        public Result Start()
        {
            return DelayedJump<JumpWithArguments>(c => c.Step2("Hola"), TimeSpan.FromMinutes(10));
        }

        public Result Step2(string value)
        {
            Debug.WriteLine(value);
            return End();
        }
    }

Work queue processor API

Most common scenarios using Codeflows will probably use a message queue infrastructure (MSMQ, AppFabric Queue, Rabbit MQ) to schedule the execution of Codeflows. However, Codeflows also comes with a simple work queue processor API that can be used by a host to execute Codeflows persisted in its built-in SQL server persistence store.

Async IO operations

Codeflow actions can execute asynchronous IO operations using standard System.Threading.Tasks API and release the worker threads to perform more important work.

Extensibility

Don't like built-in persistence or work queue processor implementation? You can plug your own.


Form more information Read (Please be aware that these blog posts are based on an experimental version of Codeflows. Some implementation details have changed since then).

Last edited Nov 7, 2011 at 1:07 PM by Buddhike, version 8