Have You Implemented Backward Chaining On A Microsoft Rule Engine?

Every so often I hear about a “friend of a friend” who has implemented a backward chaining project with one of the Microsoft rule engines (WF Rules, BizTalk MS BRE). However, the details usually fail to materialize. If you have worked on such a system, or know someone who has – please contact me using the contact form on this blog. I’m interested in understanding more about your project and how successfully the backward chaining implementation went.

(As always – this is mainly personal interest, and does not reflect on any future directions of my employer’s products.)

Share and Enjoy:
  • Live
  • LinkedIn
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Technorati

Related posts:

  1. Who Said It? “any backward chaining engine must eventually…”
  2. Microsoft’s Rule Engines
  3. On Chaining
  4. Another Dormant .NET Rule Engine Project: Simple Rule Engine
  5. Another .NET Rete Implementation – NRuler

4 Responses to “Have You Implemented Backward Chaining On A Microsoft Rule Engine?”

  1. LOL. Karl didn’t say that I’m one of the people who told him it can be done. I will rise to the challenge, I promise, and document something. It’s actually quite straightforward in MS BRE, and a testament to the power of the ’situated rule engine’ concept that Microsoft picked up from IBM Research via CommonRules and BRML, together with the predicate/function aspect of BRL, built-in functions and predicates (still there, essentially, in W3C RIF) and things like long- and short-term facts.

    I do want to do a bit more research on this before I blog. In particular, I’m intrigued by the prospect of implementing what others have called ‘full opportunistic backward chaining’. I am fairly confident this can be done, but I need to look a bit deeper at the idea of automating the instrumentation of rule sets before they are translated to Rete and executed. It would take some non-trivial coding.

    Another interesting bit of trivia. Turns out that you can quite easily implement ‘continuous query’ on top of BRE as well. Again, no in-built or explicit support (except, in a sense, the ‘halt’ and ‘execute’ engine methods), but it isn’t hard to do.

  2. Karl W. Reinsch says:

    Well, Charles, that’s because you aren’t guilty of making the “friend of a friend” type statements. I know that you’ll make good with your data in good time in one form on another. :-)

    I’m fishing for data regarding the multiple other instances I have heard about. Sure, it’s technically possible. But how many people have actually tried it? And of those people, how many did so for more than just an intellectual exercise?

  3. I know what you are saying, and for me this is certainly an intellectual exercise at the current time. I’m anticipating involvement in fairly heavy-duty rule design in a forthcoming project which will probably keep me occupied for half of this year, so maybe there will be occassion there to put things like backward-chaining into action.

    The problem I have with Microsoft asking how many of their customers actually do this for real is that we can safely give the answer. Broadly, none. No one does it because no one knows you can do it, understands how to do it or sees any reason why you would want to do it BRE is powerful (with some holes), but lacks the mature tooling and guidance to attract serious attention from most BizTalk developers. The only thing people like me can do is to point out the missed opportunity and pass on the knowledge…which I shall do.

  4. [...] Engine (I even sent him a little example). A couple of days later he published a second post at http://karlreinsch.com/2010/01/11/have-you-implemented-backward-chaining-on-a-microsoft-rule-engine/. So, I shall rise to the challenge and explain how backward chaining can be done in the BRE. [...]

Leave a Reply