My colleague, the ’Arch Hacker’, forwarded an email to me this evening from Kenton Price. Kenton had noticed some peculiar behaviour using the Microsoft Business Rules Engine. Here are the pertinent extracts from Kenton’s report:
“It appears that if you assert a fact in a rule, it hangs around for subsequent instantiations of the rule engine, behaving like a long-term fact…. I solved it by retracting each asserted fact on every exit path (I had a jump-out-early that halts and stops all other rules, so I had to retract the asserted facts here too)….Facts provided in the object[] passed to the BRE call are all retracted automatically. It appears that any others you assert within the rules must be manually retracted.”

Kenton is quite correct.The issue is actually to do with the Policy class, and there are good reasons why the engine behaves this way. Read more at http://geekswithblogs.net/cyoung/archive/2009/04/28/131548.aspx.