Powerful templatization mechanism
- Simple rule templates
- Default rules inside templates
- Partial template implementation
- Optional conditions and actions
OpenRules Templates provide a powerful while intuitive mechanism for a compact organization of enterprise-level business rules repositories. Rule templates allow rule designers to write the rules logic once and use it many times. With rule templates you may completely hide rules implementation details from business users.Rule templates are regular Rules tables such as this "defineGreeting" rules table:
We may use this decision table as a template to define different greeting rules for summer and winter time. Simple templates do not usually contain any rules because concrete template implementations (actual rules tables) will provide the rules. The actual rules table implements the template with particular rules:
Note that Rules tables "summerGreeting" and "winterGreeting" do not have technical information at all - Java snippets and a signature are defined only once and reside in the template-table "defineGreeting". We will refer to these rule tables created based on a template as "template implementations". Along with the keyword "template" you may use keywords "extends" or "implements".
Simple templates require that the extended tables should have exactly the same condition and action columns.
You may create templates for both vertical and horizontal rule tables.
rules inside templates
The release 5.1 added an ability
to define some rules directly in a template that will be
executed when all other rules inside template
implementations fail. For example, consider this
template for multi-hit rule tables:
The following implementation of
by mistake misses the hour 11. So, if these rules are launched between 10 and 12 the default rule from the template will not be overridden by any rule from the implementation and the "Invalid Greeting" will be produced.
Let's consider a template for
single-hit rule tables like such as this one:
The default rules from the template will be executed only when all rules from an implementation table failed.
The defaults rules allows a
rule repository designer to define unified rules for
exceptional conditions only once in the templates
instead of repeating them many times in multiple
You may create large rule templates but use not all but only selected conditions and actions in the rule tables created based on these templates. To do that, it is enough to add the second row that specifies the names of the selected conditions and actions like in the example below:
Here the column C3 from the template "defineSalutation" above is ignored.
conditions and actions
If the majority of the template implementations do not use a certain condition/action from the template, then this condition/action may be explicitly marked as "optional" by putting the condition name in the brackets, e.g. "[C3]" or "[Action2]". In this case it is not necessary to use the second row to specify the selected conditions in the majority of the rule tables. Only template implementations that actually need optional columns will use the second row to explicitly specify the optional columns.
Write once use many times
Write rules for one state or country and then use them as a template for all other states/countries
Changes in the implementation of a rule template are automatically propagated to all rule tables that extend this template.
Complete separation of business and technical views
Business people have less to learn and do not have to even know about the implementation details
Technical people have more freedom in rule templates design and maintenance not being afraid to scare business counterparts by complexity of rules signature and implementation logic. Templates usually placed in a separate subdirectories inside a rule repository
By placing rule templates and rule tables in separate files you may essentially simplify authorization control and who-does-what assignments
Rules repository becomes smaller and easy to maintain
Templates allow to avoid a "paste-copy" approach by minimizing the total amount of code and size of rule tables
While preserving the same structure changes in the templates and rules could be done independently
Expedited initialization of OpenRulesEngine
Use of rule templates essentially minimizes the initialization time when OpenRulesEngine downloads all rules for the first time
Based on the size and design of the existing rules repositories the gain in the initialization time could vary from 2 to 5 times
Libraries of rule templates specific for different lines of business
Rule templates provides an ability for creation of OpenRules template libraries for different lines of business. It allows leading organizations in different industries to implement already established business standards such as ACORD for insurances or MISMO for mortgages as a set of rule templates. Even if the library implementers prefers to use their own business models initially they always may change template implementation later on without changing the business rules themselves
A similar model works well for software vendors who define and maintain their product specific template libraries in accordance with their latest business object models.