FluentWorkflow is built with SOLID principles in mind from the ground up.   This focus has lent itself to the ability to create state tasks that are very focused and, through dependency injection, extremely powerful.

FluentWorkflow is built on top of three key/core components:

  1. The System.Composition namespace – this is for core metadata association offered in the .net 4.0 framework.
  2. stateless – this is a state engine based on .net 3.5+ created  Nicholas Blumhardt
  3. Autofac – this is an Inversion of Control container build on .Net3.5+ capabilities

FluentWorkflow uses the DSL to generate a symbol table which is

  • Evaluated as a transitive closure to make sure state transitions are complete.
  • Execution ordering is accomplished using a constraint resolving algorithm.  The algorithm is written entirely in Linq.
  • Errors in configuration including cyclical references, incomplete closure and others are raised through exceptions that point you directly to the state step configuration in question.

Due to the use of Func<..> injection combined with .net4 metadata and the AutofacContrib.Attributed project, the first release of FluentWorkflow is built to work with Autofac 2.4 or greater.

The dependency on Autofac can be moved when:

  1. Other containers support the types of creation/relation patterns that autofac supports (see The Relationship Zoo)
  2. Other containers support System.Composition based metadata storage or another metadata storage mechanism takes its place.

Last edited Jan 4, 2011 at 5:46 AM by sdhebert, version 2

Comments

No comments yet.