So a customer wanted to use the Rule Engine 'stand-alone' for comprehensive processing of rules both sequential and intricate in nature with complex relations woven between them.
All was well until we put the Rule Engine to test; the scarce documentation/experimentation can be the first roadblock with the rule engine. Testing of the rules can be a real pain esp. when you implement your custom .NET classes. Business Rule composer will test schemas for you however if ur rules involve any custom classes then be prepared to implement the IFactCreator class and then refer to it in your Testing GUI.
You also have the option of testing through code in line with the following code:
TypedXmlDocument tdoc = new TypedXmlDocument("", xd);
object[] fact = new object[] {tdoc};
Policy policy;
policy = new Policy("MyPolicy");
policy.Execute(fact);
policy.Dispose();
So another interesting aspect of updating the same fact in a sequential array of rules is the SideEffect property. Problem is that when you are trying to update the same fact in lets say multiple rules then the value is cached and rule engine behaves rather 'unpredictably' (Refer to http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdk/htm/ebiz_prog_rules_ynfl.asp). 'Update(Fact)' was supposed to be the solution, however that didnt work out either.
Many a times people wonder about IF/ELSE logic which is apparently missing in Rule engine (IF/THEN only). However looking closely u can acheive the same effect by combining IF/THEN & IF-NOT/THEN.