One of the questions I get a lot is "how do I build a list of requirements" when selecting a business rules engine or business rules management system. These, it seems to me, fall into various categories:
- Rule Syntax - what basic mechanisms exist for editing rules?
- Business User Editing Environment - how easy is it for business users to edit rules?
- Decision Process Design - how can you design a multi-step decision?
- Performance Tuning and Debugging - what reports and tools exist?
- Reporting - how extensive are the reports available?
- Rule storage and versioning - how good is the repository infrastructure?
- Integration - how easily does the system integrate with the rest of your IT infrastructure?
- Dialog Support - how does the system integrate with user interactions?
- Help and Documentation - what is available?
Let's consider each of those in turn:
- Is the out of the box rule language understandable by business experts?
- Does the language handle procedural or technical functions without calling out?
- Can the language call on external routines when desired?
- Is the language “friendly” for technical programmers as well as business people?
- Can programmers express concepts clearly and succinctly in their terms?
- Are there succinct ways to input and maintain large groups of rules?
- Are look-up tables supported in multiple formats?
- Are tables limited to single-value numeric return values?
- Are trees supported for dependent rule chains?
- Is there a clear and succinct way to input and maintain relative weightings for many different factors contributing to a decision threshold?
- Can the system track and report the most significant factors in a decision?
Business User Editing Environment
- Can business users enter a rule of any level of complexity through an web-based environment separate from the development environment?
- Do business users require training in programming syntax to create/modify rules?
- Can the editing environment be easily customized to match the look and feel of other editors that business users are familiar with?
- Can the business users be constrained in their choices to enforce safe editing of the rules and to avoid flooding them with too many choices?
- Do changes through the business user editor get versioned?
- Can access to the editing environment be controlled through authorization systems and different views of the rules given to users based on their role and security level?
Decision Process Design
- Is there a capability for separating the procedural order of steps in the decision process from the business logic involved in each step?
- Is there a visual editor for diagramming the order of the steps in the business process?
- Can the “big picture” be created, reviewed, and understood by business people without technical training?
- Can rules be grouped by task in order to simplify maintenance?
- Can related rules be viewed and edited on the same page for ease of reference and context?
Performance Tuning and Debugging
- Can individual steps in an overall decision process be tuned for maximum performance by the execution engine?
- Can you track performance in test and production systems, formatting results for ease of analysis?
- Can you set traces, breakpoints, and watches on all objects and events within the rule project?
- Can you step line by line through the running of the rules, setting a breakpoint on any of the lines of execution?
- Is there a way to visually see the steps that the rule engine goes through and step forwards and backwards to see internal operations?
- Can you generate a report on all the components of your project?
- Do comments appear in reports and can you format them?
- Can you find potential rule conflicts?
- Is there an impact analysis report?
Rule storage and versioning
- Does the product allow options in the choice of a storage mechanism for rules (eg: databases, flat files, LDAP directories)?
- Can rule files be versioned and access-controlled?
- Can entire projects be versioned to do release management?
- Is it possible to roll back to previous versions and run the rules as they were at a specific point in time?
- Can the repository be structured to support a hierarchical view of many rules?
- Is it possible to store information about the policy source behind the rule?
- Can metadata of any type be stored on any part of the project?
- Can the repository store information used for rule promotion?
- Is it possible to search a project for a specific term or phrase?
- Can you search based on when the files were edited, who edited them, or any other metadata associated with the project?
- Can you save your queries for later use by others?
- Can you directly access external data models?
- Can you write rules without defining and maintaining a data dictionary?
- Does the product include deployment facilities for rapid integration of rules into existing production systems, including generation of configuration and rule invocation files?
- Does the product have predefined integrations with application server software, including regular updates to stay up to date with new versions of the application servers?
- Do you have to shut down or restart the production application in order to update rules?
- Can you pass data to and from the rules service without requiring conversion to one of a limited number of supported data types?
- Are stateful sessions supported for tracking what has occurred to date in a transaction and continuing with session-appropriate questions and dialog?
- Can you group questions into sets for easy interactive retrieval and storage of multiple data items without having to write separate code for each one?
- Can the IDE work with interactive prompts designed for the production system without requiring separate “test only” code substitutions?
- Can you build interactive rules-driven interfaces?
Help and Documentation
- Is context sensitive help available in the IDE?
- Are documentation, examples, tutorials, and help files available in commonly used formats for all product features? Are there aids for both novice and experienced users?
- Is information on best practices included in the documentation?