Blaze Advisor 5.1 shines for developers and business analysts
For any large company struggling to maintain large, complex Java applications that involve thousands of business rules, Blaze Advisor 5.1 should prove exceptional. It is easy to learn and most business analysts will understand it without trouble.
In effect, once set up by the programmers, Blaze Advisor moves control of the business rules from the IT department to the various business departments. Like other Java-based BRMSes (business rules management systems) — such as ILOG’s JRules, PST’s OPSJ, and Sandia Labs’ Jess — Blaze
Advisor is basically a rule-based inferencing engine. Among these, however, only JRules and Blaze Advisor have all the features needed to support enterprise projects: multiple views of the same rules, rapid code deployment for various installations, easily maintainable code, version control, structured user access, excellent debugging tools, and an English-like rule-building language that makes maintaining rules easy for developers and business analysts alike.
Blaze Advisor shines in the wealth of tools it offers to both programmers and business analysts. Version 5.1 adds to this wealth new features such as rule inheritance and decision trees, in addition to improvements in existing features such as decision tables and versioning. But Blaze’s light dims in performance, as I found when running the standard benchmarking tests for Java rules engines, the Miss Manners and Waltz tests.
Bells and Whistles
New decision trees give programmers and business analysts a powerful way to visualize and edit chains of dependent rules. Almost any task that can be done from within other rule views can be done in decision trees including creating or changing condition nodes or action nodes, reordering the sequence of conditions, and changing the order in which the rules engine processes the rules.
Decision tables, updated in version 5.1, offer the business analyst a view of the rules in the form of a traditional spreadsheet, but allow the programmer to see the rules in the “raw” format. As the business analyst changes the spreadsheet, the underlying rules also change.
Blaze Advisor’s internal versioning and access control mechanism is also greatly improved in version 5.1, and is now probably one of the best in the industry. In addition to providing a rule check-in/check-out repository, Blaze allows you to have several versions of the rules for different applications and permits control over who has access to which rule or rule sets.
Also new in version 5.1, and unique to Blaze Advisor among BRMSes, is rule inheritance. Here Fair Isaac has taken what is usually considered a problem — called rule subsumption in the AI world — and turned it into an asset. If you create a sub-rule in a decision tree, you can inherit all of the essential attributes of the root rule. Rule inheritance certainly saves development time, but it can be dangerous when used improperly.
Another unique feature is Blaze’s SRL (Structured Rule Language), which enables the use of regular expressions. In SRL the user can find string matches and submatches, create strings from those matches,
split strings, etc. It’s also good for data validation problems such as ensuring proper credit card numbers.
And yet another unique feature of Blaze Advisor is the “when changed” operator that only fires when an attribute of an object changes. A business analyst might use it to watch for any important issue, such as a thermostat warning in a process plant or a particular stock reaching a certain price or volume.
Deploy and Tune
Blaze Advisor has automatic code deployment for almost all of the J2EE servers including those from BEA, IBM, Oracle, Borland, Hewlett-Packard, and Sun. (I tested with JBoss 3.0.) Blaze Advisor supplies an excellent wizard for deployment and code generation.
However, deploying Blaze Advisor on JBoss wasn’t as straightforward as it should have been. When you generate the J2EE deployment using the Blaze Advisor deployment tool, Blaze will generate a specific HTML file for JBoss 3.0. At that point, you have to follow the HTML directions, not the tutorial instructions, which are incorrect. Fair Isaac said it will iron out the kinks in the documentation for the next rollout.
A bigger problem is performance. It is much more difficult to squeeze good performance out of Blaze Advisor than from JRules, OPSJ, or Jess. Usually, you must resort to writing special classes and methods outside of the normal thought process. When the rules are coded using the traditional OPS (Official Production System) approach, as in the Miss Manners and Waltz benchmark tests, Blaze performs much slower than the other inferencing engines.
Fair Isaac technical staff offered several explanations for the poor benchmark performance, but none to my satisfaction. Use the Blaze Advisor performance tools to find the problem and optimize the offending rules so that the Blaze Advisor engine can more easily handle the problem.
Fortunately, Fair Isaac also offers some excellent consulting services to help customers improve performance. When I accepted Fair Isaac tech support’s suggestion of a “free form” solution (one that didn’t adhere to the benchmark principles), performance increased into the same ball park as JRules and others, except for OPSJ, the speed demon among rules engines.
Blaze Advisor is an intelligent business tool that, when used properly, can help any company focus on the important things in business life — understanding the core business rules and implementing them easily and quickly. Compared to ILOG’s JRules, its only enterprise-class competitor, Blaze Advisor offers far more tools and views for design, analysis, and debugging, and makes it easier to consolidate rules into a central, easily maintained repository.
Although Blaze doesn’t match JRules in performance, it will nonetheless attract those companies seeking to reduce development time across large numbers of developers and business analysts.
Ease of use (10.0%)
Developer tools (25.0%)
Rule repository (15.0%)
Overall Score (100%)
|Blaze Advisor 5.1||8.0||9.0||9.0||9.0||9.0||8.0||5.0||8.2|