Having just wrapped up the European Business Rules Conference (see my previous posts), I noticed that some misinformation was provided at EBRC around sequential and inferencing execution of business rules. Sadly the misinformation was provided by a vendor (who lacks inferencing capability in their product) in what was supposed to be an informational, rather than vendor-sponsored, session. In the interest of fair disclosure, I work for one of the vendors about whom the presenter deliberately misinformed his audience. So, what was it he said?
He essentially presented two lists of vendors - those supporting Rete or inferencing and those supporting sequential execution of rules. He asserted that sequential execution was ideal for 90% of problems while Rete was only ideal for 10%. Not only did he not support this assertion, he also implied that Rete-based products were also only ideal for 10% of problems. However, at least some of the vendors he labeled as "Rete vendors" support both Rete/Inferencing and sequential execution. The reverse is not true of the non-Rete vendors (including his own). Thus, even if he is right about Rete v non-Rete (which he is not, see below), he should have pointed out that the major vendors (Fair Isaac, ILOG etc) who support both Rete and sequential execution are ideal for 100% while those that only support sequential execution are ideal for just 90%. In other words, lacking Rete support, his product cannot support 10% of situations at all. Instead he mislead the audience into thinking they must pick either inferencing/Rete or sequential/non-Rete and that, I am afraid, is simply not true.
Having started by misleading his audience over the actual choice they had in terms of vendors, he then proceeded to mislead them in terms of the implementation approaches they have for rules. He tried to compare and contrast Rete/Inferencing execution and sequential/non-inferencing. Particular errors of fact included:
- Rete is only ideal for 10% of problems - UNKNOWN
- While many problems do not require inferencing, this is a simple assertion on his part not something for which any data exists
- Rete involves rules without context meaning you can get no overview - FALSE
- Rete vendors offer all the exploratory tools you need to avoid this problem
- Rete has low performance due to interpretation - FALSE
- Rete implementations from the leading vendors are compiled into memory for performance so this is simply not true.
- Rete has low scalability in the face of increasing facts, rules - FALSE
- The original Rete algorithm was intensely scalable in the face of additional rules, this being one of its most interesting features, and more recent implementations (such as Fair Isaac's Rete 3) are also highly scalable in the face of increasing facts
- Rete behavior / sequence difficult to predict - AMBIGUOUS
- This can be true for inferencing but the leading vendors offer debugging, trace and other tools to debug execution sequence. In addition, the use of inferencing to execute a ruleset means that the order in which rules were written or edited is immaterial, making for more stable behavior in rulesets with high rates of change (such as those being maintained by business users)
- Sequential execution conforms to a human way of thinking - FALSE
- This is only true of very dumb humans who, when faced with a checklist, are unable to use information from one question to adapt their subsequent question - the kind of intelligent questioning most professionals use. Sequential execution is completely mindless.
- Sequential is intuitive - FALSE for real-world situations
- No set of rules is intuitive once it becomes large. While sequential rulesets may be easier to understand for trivial numbers of rules, real-world applications with thousands of tends of thousands of rules require rule management regardless of execution mode. That's why the leading vendors, which list does not include his by any measure of market share or usage, focus on rule management capabilities
- Sequential offers significantly higher performance - FALSE
- Sequential, and modes like Blaze Advisor's compiled sequential, are only faster in terms of the total numbers of rules fired. However, sequential execution almost always implies that more rules must be executed as no algorithm is applied to see which rules might be relevant - it is much dumber about which rules to fire. Sequential is thus going to be faster if a high percentage of the rules are going to be worth executing and not when execution is sparse. That's why real products offer both sequential and inferencing/Rete execution modes.
- Sequential offers linear scalability - IRRELEVANT
- Testing of Blaze Advisor's inferencing and sequential modes shows them both to offer linear scalability. To imply that this is not a characteristics of Rete/inferencing is false.
- Sequential executions means that behavior and sequence are easy to predict - FALSE in real-world situations
- Again he confuses the issue by talking only about small numbers of rules. When large numbers of rules are at issue, as they are in the kinds of real systems the major vendors build, behavior and sequence are hard to predict no matter which execution mode you pick and so rule management, testing tools based on xUnit, rule verification and validation, and scenario management are critical.
If you want to solve real-world rules problems, pick a vendor that offers inferencing/Rete and sequential execution and understands that they are called Business Rules Management Systems for a reason.