OdeToCode IC Logo

Windows Workflow as a Rule Engine

Monday, August 14, 2006

One interesting facet to Windows Workflow is how I can combine procedural knowledge with declarative knowledge. Procedural knowledge is the "how-to" knowledge of performing a task. If a bank requires me to make three web service calls to process a payment, I can arrange those three calls inside a Sequence activity and model the exact ordering of calls required by the bank.

WF also provides a Policy activity to process declarative knowledge. Declarative knowledge is the knowledge of facts and relationships between data. Instead of "how-to" knowledge, declarative knowledge provides the "what-is" knowledge. For example, if I want to expedite a payment, the bank will charge me an extra 3%. "All bankers are thieves" would be another piece of declarative knowledge.

Rules engines are pieces of software specialized for processing declarative knowledge. There are a few .NET rules engines around. The most recent entry, as I found out from Larry Obrien's blog, is Drools.NET. BizTalk Server also provides a rules engine, and Charles Young has a good overview of Biztalk rule processing versus Windows Workflow rule processing.

There are some great "rules-centric" Windows Workflow samples on netfx3.com. Samples include a rules driven user interface, rules in Microsoft Excel, how to use an external ruleset (think of rules stored in a database), and more.