views:

679

answers:

8

We are in the process of rewriting a large legacy system that makes extensive (mis)use of a workflow engine. Going forward, I'd like to consider alternatives to a workflow engine for the new application. One very interesting possibility is a Space-based architecture + Rules Engine. What other paradigms exist?

I'll mention that this application orchestrates complex document publishing workflows with many different tweaks depending on country/region/etc, but I'd like to keep the answers more general if possible.

Edit: I added a bounty to this question to get more feedback. I would like to hear from somebody who has actually implemented a workflow alternative. If nothing is produced, I will accept the BPEL answer, though I'm completely unenthusiatic about the technology itself.

A: 

NetBpm (a .Net Port of JBpm)

dampee
I'm not asking for alternative workflow implementations, but rather alternatives to workflow engines entirely
rcampbell
+1  A: 

BPEL based process is one option. You would go that route if you envisioned leveraging future BPEL tools for the job. Otherwise, BPEL is kind of an overcomplicated mess (as all such general "all can plug in" solutions are).

Something simple is to realize that workflow is really often about queues rather than workflow. That is, it is more about putting something on someones desk rather than directing the flow of the work according to a rigid pattern. In that context something that holds a queue, which is a defined stage of work, and then links to other potential chunks of work in a flexible way. There is a general process, but there are exceptions to that process. A rules engine can move things between queues as a matter of general process (and kick off external processes as needed), with the option for a user to arbitrarily move things into the "right" queue when the defined rules don't cut it.

Yishai
+1  A: 

Well, you have already mentioned rules-based processing. An event based processing model is somewhat similar, but is less formally constrained in terms of responding to events. Overall, I don't believe that one must exclusively adhere to a specific model.

(For example, an event based front end -> rules-based orchestration -> specific (linear) workflow processing.)

+2  A: 

It seems like such an obvious response but nobody else has raised it, so here goes: have you considered Document (or Content) Management Software?

APC
+1  A: 

If you look at it from 30,000 feet you have two options:

  • A controlling process polls queues and data stores checking what is where, and moving things based on a set of rules.
  • A system that waits to be notified of events and handels them based on a set of rules.

In both cases the "rules" can be defined in workflows / orchestrations, a rules engine or code.

We have chosen to implements systems based on the following criteria:

  • Relative simple rules, impemented directly in code
  • Complex logic in workflow. So that we can show it to the client, ask them if this is what they meant, and know that it is OK, since what they are looking at is what executes.
  • Orchestration pub/sub for moving things around based on a set of rules

I work with MS technology so for the type of system you describe, I would have implemented it in Sharepoint, which has a document management system and builtin workflows for document management. The entry level Sharepoint licence Windows Sharepoint Services is included in the operating system.

Shiraz Bhaiji
A: 

From a KISS perspective Workflow is nothing but queues and rules engine are just if else - we have a document system for which we have workflow like processing. We considered websphere's workflow and also WLI from weblogic but a simple one with JMS (MDBs as well as wake up consmers) with persistent storage has worked very well for us without any issues. I think you are taking the right approach here - good luck!

OpenSource
A: 

You could do it strictly as a Finite State Machine engine that you build dynamically based on user or culture or whatever. You would need to persist the particular automata as the state for the long running transactions. Then when the user recalls the state or takes another "action" (basically modeled as a state transition), you allow transitions to have output (Mealy machine) or on the new state (Moore machine).

JP Alioto
A: 

You can consider Apache Camel. It is EIP and Most of the Workflow Langugae like if,choice is supported, but you have to write code for it.

Subbu