views:

1126

answers:

5

I've been using WWF for a while as part of an internal call center application (ASP.NET), and while learning it was a good practice in understanding how a state machine based workflow system should work, I am definitely not in love with WWF itself. In my opinion it is:

  1. Overly complex, especially for use within web apps (all that threaded runtime stuff)
  2. Immature (ever worked with that horrible designer?)
  3. Anemic in its current feature set

Does anyone have a suggestion for a better .NET based workflow framework? Specifically, I am looking for the following features:

  1. State machine based (mapping states to available actions)
  2. A focus on user permissions (controlling who has access to what actions)
  3. The ability to run workflows as timed background tasks (for example, to send out reminders for items that have been sitting in a certain state for x days)

That's really all I need. I don't need to be able to "drag and drop" any activities or visually design the flow. I am perfectly comfortable writing actual code once a particular action is triggered.

A: 

Do you have the option to consider BizTalk Server?

Vaibhav
+7  A: 

You could try Simple State Machine. You would have to implement access control and background timers yourself, but that shouldn't be a big deal. SSM was also built out of frustration with WF. There are some other state machine implementations on Codeplex as well. If one of them doesn't fit he bill out of the box, they are open source and should get you close enough.

I wholeheartedly agree with you about state machines in WF - they aren't testable, are too complicated, the threading model is peculiar and hard to follow, and I'm not sure a visual designer could have been more poorly conceived for designing state machines graphically. I think this may be because the state machine concept feels tacked onto the WF runtime, which was designed for sequential state machines, something WF does a much better job with, in my opinion. The problem is that state machines are really not the same animal as a sequential work flow, and should have been given a first class implementation of their own, because the warping of WF to make it seem to support them turned out to be more or less unsupportable, if not actually unusable.

Nathan
Simple State Machine is clever. If its model fits but you'd rather work in C# than Boo, you might also consider Stateless (http://stateless.googlecode.com)
Nicholas Blumhardt
Sorry, I'm new here (and to .NET) so I'm late to the game. :) I agree that the state machine implementation in WF is pretty complicated. I myself am using sequential workflows because they do match my requirements, but the error handling is really tricky (for me) when everything involved still includes GUI update requirements. Thanks for recommending Simple State Machine -- I like how easy it is to implement sequential workflows in WF, but I imagine that it's still pretty easy in SSM, and perhaps error handling will be much more simple to implement as well.
Dave
+1  A: 

Try Drools.NET

Nick Berardi
+2  A: 

I would stay away from Drools.Net since it's last SVN commit was in September 2007. Looks nice but it seems a bit too risky to make such a big library part of your project when you know it doesn't get any attention anymore.

TomA
A: 

I quite enjoyed working with Oracle BPEL Process Manager. It's part of JDeveloper.

http://www.oracle.com/technology/bpel/index.html http://gemsres.com/story/dec06/313602/jellema-fig1.jpg

ilitirit