1. Traditional rule engines (RETE-based or Sequential).
2. Constraint-based rule engines
The systems built on top of the traditional rule engines, usually expect human modelers to write rules for ALL possible combinations of decision variables to find ONE possible decision. In particular, this is true for decision models which follow the Decision Model and Notation (DMN) standard.
Constraint-based rule engines were introduced in 2011 based on the article “Representing and Solving Rule-Based Decision Models with Constraint Solvers“. In particular, the main premises of this paper were implemented in OpenRules Solver that takes a rules-based decision model and transforms it into a constraint satisfaction problem that can be solved with an off-the-shelf constraint solver. This approach doesn’t force a human modeler to describe all possible situations and is capable to automatically find multiple feasible decisions and even the optimal one.
However, real-world experience shows that it could be very difficult (or even impossible) to represent all decision modeling constructs using only constraint programming facilities. Thus, both above approaches have their serious limitations. Different researchers (including myself) tried to merge both approaches but so far it worked only for relatively simple decision models. So, I decided to investigate the third approach to business decision modeling:
3. Integrated use of Rule Engines and CP/LP Solvers
We may split our decision model into several sub-models:
- Business decision models which can be represented and executed using rule engines
- Optimization decision models which can be represented and executed using constraint or linear solvers.
I’ve just published a paper “Business Decision Modeling with Rule Engines and CP/LP Solvers” that describes this approach utilizing open source products:
- OpenRules – for business decision models
- Java Solver with various off-the-shelf Constraint and Linear solvers – for optimization models.
To demonstrate the integrated approach the paper uses a very simple example and also refers to more complex already published decision models. Here is the link to this paper. Comments and suggestions are welcome.