10

I have to create a workflow in C# capable of moving an object (persisted as a database record) through an approval workflow where people are required to perform some sort of action or validation.

We initially looked at Windows Workflow Foundation but shied away from it because it seemed so infrastructure-heavy (and besides we don't really like Microsoft products). We looked at ObjectFlow because it's lightweight, but I'm having trouble figuring out how to persist & resume workflow states. It almost seems like it's too lightweight.

Does anyone have a particular favorite framework for doing workflow? I'm open to ideas (even to WWF, if you can explain why it's your favorite).

MD Zand
  • 2,366
  • 3
  • 14
  • 25
kelloti
  • 8,705
  • 5
  • 46
  • 82
  • 1
    Did you have a look here? http://stackoverflow.com/questions/3634901/to-workflow-or-not-to-workflow – gsharp Mar 04 '11 at 19:52
  • @gsharp - that question was asked last year. Has the situation changed much since then? – kelloti Mar 04 '11 at 20:47

4 Answers4

11

Now at the end of 2022 I recommend Elsa Workflows library which is free and open source.In this case state machine workflows works. I have used it in multiple projects witch success. It is flexible, has a web workflow designer and acceptable documents

MD Zand
  • 2,366
  • 3
  • 14
  • 25
3

As the question @gsharp linked to says, WF 4 isn't entirely easy to use. However, ObjectFlow has an easy fluent interface that is light and built with solid design principles. Given the apparent lack of decent workflow frameworks, I decided to pitch in and extend ObjectFlow with an IStatefulWorkflow that contains a .Yield() method capable of yielding workflow processing to the calling method so that it's state can be persisted.

The end result of my work will be a new release at codeplex in a couple weeks. Until then, you can follow my progress at github.

kelloti
  • 8,705
  • 5
  • 46
  • 82
  • I noticed that the github repository hasn't been updated in a few years. Have your changes been merged into the codeplex project? Many thanks! – Annie B Feb 28 '13 at 21:24
  • It never got merged in. The changes were so severe that it was too hard to merge them. Also, I've moved to another job and I don't really have a need for a workflow framework anymore. Sorry :( – kelloti Mar 01 '13 at 01:21
0

Have you looked at Drools.Net?

Drools.NET is a Business Rules Engine (BRE) based on Charles Forgy's Rete algorithm. Developers can now exploit a powerful Rule Engine through a completely managed .NET code base! Drools.NET is based on Jboss Rules, and comes with all the features of that Rules Engine.

Oded
  • 489,969
  • 99
  • 883
  • 1,009
  • The documentation is thin. How easily does it fit into my application? – kelloti Mar 04 '11 at 19:36
  • @kelloti - I am not a mind reader. I have no idea about your application. I know that drools is a popular rules engine/workflow engine. – Oded Mar 04 '11 at 19:37
  • 2
    Have you used it personally? Does it require an additional server? Do I setup my workflows in code, GUI or configuration file? They only have one page of documentation and it doesn't answer any of my questions. I'm sure the rules engine is powerful, but are there any good examples out there that would help me understand why it's good? – kelloti Mar 04 '11 at 19:42
  • 1
    @kelloti - No, I have not used it, but have heard and read that it is (as is the java engine it is based on). From the documentation on [this page](http://droolsdotnet.codehaus.org/Drools.Net+-+3.0+User+and+Installation+Guide) it appears that you reference it in your application and use the infrastructure it provides - no server required. It appears that you setup workflows in `drl` files or decision tables (that can be expressed as excel speardsheets). – Oded Mar 04 '11 at 19:47
-1

I have recently developed a C# Workflow library that leverages the fluent syntax and provides compile time validation between workflow steps. A Workflow's steps can be consolidated in a single location providing maintainable code. The library is very light weight and performant.

https://www.nuget.org/packages/NetWorkflow

https://github.com/Tmarndt1/NetWorkflow