What is a Rules Engine?
- A Rule is a set of conditions triggering a set of actions (
if <conditions> then <action>).
- A domain expert models the domain knowledge (buisness rules) by defining the set of all the rules.
- Rules are usually defined using a domain-specific lanaguage also known as DSL.
- Using these sets of rules, we can build an expert system that can make decisions on behalf of domain experts.
- A rules engine is in the core of an expert system.
- Data constantly come through the system in streams or in batches.
- The rules engine decides when to evaluate which rules (evaluation can happen on-demand or in cycles).
- The order in which rules are defined does not matter. The rules engine decides which rules should be evaluated in what order.
- Chaining happens when the action part of one rule changes the state of the system and the conditions of other rules which can lead to triggering other actions as well.
- Chaining makes it very hard to reason about and debug the system.
- An inference engine applies logical rules to the knowledge base to infer new information from known facts.
- Inference engines usually proceed in two modes: forward chaining and backward chaining.
- There are some challenges with rule-based systems and expert systems:
- The sets of rules need to be defined and maintained by domain experts.
- An expert system is just as capable and precise as the rules are.
- For performance reasons, there are limitations applied to rule definitions (no. of rules, no. of conditions, cardinality of dimensions, etc.).