Drools is an open-source Business Rules Management Software (BRMS) written in Java that provides users with a variety of features like Business Rule Engine, Web authoring, Rules Management Application, and runtime support for Decision Model and Notation models. It uses advanced implementation system of rete pattern matching algorithm.
Drools was released under Apache Licence 2.0 and it is compatible with any JVM and available in Maven Central Repository also.
The Drools tool helps you to separate and reason over logic and data found in business processes. It supports forward and backward chaining inference-based drools rules engine.
Drools are split into two parts: Authoring and Runtime.
- Authoring – It involves the development of rules files.
- Runtime – It involves the creation of working memory and handling the activation.
In this Drools tutorial for beginners, you will learn:
- What is Drool?
- What is Rule?
- What is the Rule Engine?
- Drools Tools Suite
- Important components in Drools
- Architecture of Drools
- Features of Drool
- How to add Drools plugins in Eclipse
- Drools Program Hello World Example
- Why use Drools Rule Engine?
- Disadvantages of Rules Engine
Rules are parts of knowledge often expressed as, “When specific conditions occur, then do some tasks.”
The most crucial part of a rule is it’s when part. Once when part is satisfied, then the part is triggered.
When <Condition is true> Then <Take desired Action>
Pattern Matching Method:
Pattern matching method helps you to compare new or old facts with the production rules. It is completed by the Inference Engine.
Algorithms used for Pattern Matching are:
- Rete Algorithm
- Leaps Algorithm
- Linear Algorithm
- Treat Algorithm
However, the algorithm mostly used by Drools is the Rete Algorithm.
The Rete algorithm is a useful pattern matching algorithm which allows you to implement production rule systems. It helps you to sacrifice memory for increased speed. It also reduces or eliminates specific types of redundancy with the help of node sharing. It stores partial matches while performing joins between different fact types.
Drools Rule Engine is a rule-based approach to implement an Expert system in the Drools software. The Rule engine provides Expert systems which are knowledge-based systems that help you to make decisions like what to do and how to do it. It gathers knowledge into a knowledge base that can be used for reasoning.
Now in this Drools Rule Engine tutorial, we will learn about Drools Tool Suite. Here, are five types of tools which come as a part of the Drools suite:
- Drools Guvnor: It is a centralized repository for Drools KnowledgeBase.
- Drools Flow: It offers workflow and business processes.
- Drools Fusion: Tool used for complex event processing
- Drools Expert or Rules Engine: A useful tool for performing reasoning.
- Drools Planner: To offers automated planning, which includes NP-hard planning problems.
Now in this Drools tutorial, let’s learn about important components of Drools.
Here, are essential terms used in Drools:
- Facts – Fact represent the data which serves as input for rules
- Working Memory – Storage with Facts, where they are used for pattern matching. It can be modified, insert, and remove.
- Knowledge Session – This component holds all the resources required for firing rule. Here, all facts are inserted into the single session, and then matching rules are fired.
- Knowledge Base – It represents the knowledge in the Drools ecosystem. It stores the formation of the resources where rules are found.
- Module – This is a module which stores multiple Knowledge Bases which can hold different sessions
Here is the working system of Drools architecture:
Step 1) The rules are loaded into Rule Base, which are available all the times.
Step 2) Facts are asserted into the Working Memory where they may then be modified or retracted.
Step 3) The process of matching the new or existing facts against production rules is called pattern matching, which is performed by the Rule engine.
Step 4) The agenda allows you to manage the execution order of the conflicting rules with the help of a conflict resolution strategy.
Here are important features of Drool:
- Helps you to separate application from dynamic logic
- Declarative Programming
- Centralization of Knowledge
- Speed and Scalability
- Separate logic from application
- Understandable rules
Now in this Drools tutorial, let’s learn how to add Drools plugin in Eclipse.
Step 1) Go to link and click “Distribution ZIP” for jBPM Integration. Once downloaded extract it in your hard drive
Step 2) In Eclipse, select Install New Software
Step 3) Click on Add
Step 4) In the next screen,
- Click on Local
- Select folder “org.drools.updatesite/”
- Click Ok
Step 5) Click Next
Step 6) Accept the license agreement and click next
Step 7) Software will download and you will be asked to reboot eclipse
Step 8) In Windows > Preferences menu, you will see Drools option indicating it’s installed.
Below is a Drools example for Hello World program:
package com.sample inport com.sample.DroolsTest.Message; rule "Hello World" when m : Message( status ** Message.Hello, myMessage : message ) then System.out.println( myMessage ); m.setMessage( "Goodbye cruel world" ); m.setStatus( Message.GOODBYE ); update( m ); end rule "GoodBye" when Message( status ** Message.GOODBYE, myMessage : message ) then System.out.println( myMessage ); end
What is Backward vs. Forward Chaining?
A forward-chaining engine checks the facts and derives a specific conclusion.
Let’s consider a scenario of the medical diagnosis system. If the patient’s symptoms are put as facts into working memory, then it is easy to diagnose him with an ailment.
A backward chaining engine has the set goal, and the engine tries to satisfy it.
Consider the same scenario of medical diagnosis. Assume that an epidemic of a certain disease. This AI could presume a given individual had the disease and attempt to determine if its diagnosis is correct based on available information.
Here, are prime reasons for using Drools rules engine:
- Rules are easy to understand for developers and business analysts.
- Rules are easily maintainable.
- Rule Engine uses a Rete algorithm which states that the performance of the engine never depends on the number of rules.
- Rules can be modified and deployed without bringing down the application.
- Externalizes the business logic from the comparatively static codebase.
- Rules are developed in less complicated formats so the business analyst can easily read and verify a group of rules.
- Rules allow you to create a warehouse of knowledge which is executable in form.
- Tools like Eclipse help you to manage rules, get an instant response, authentication, and content support.
Here, are drawbacks/ cons of using rules engine:
- Lots of learning effort requires by developers to know this method of programming
- Rule engine is not a secure method to troubleshoot issues.
- Needs to understand the working of rule engine to consumes more memory
- There are a wide set of rules for a complex branching.
Rules may change over time and will become effective with code changes
- JBoss Drools is a Business Logic integration Platform (BLiP)
- Types of Drool tool are: 1) Drools Guvnor 2) Drools Flow 3) Drools Fusion 4) Drools Expert 5) Drools, Planner.
- Drool helps you to separate application from dynamic logic.
- Fact has represented the data which serves as input for rules.
- Working memory is a storage with Facts, where they are used for pattern matching. It can be modified, insert, and remove.
- Knowledge base is a component which holds all the resources required for firing rule.
- Knowledge session represents the knowledge in the Drools ecosystem.
- Knowledge base represents the knowledge in the Drools ecosystem.
- Module stores multiple knowledge bases, which can hold different sessions.
- Rules are parts of knowledge often expressed as, “When specific conditions occur, then do some tasks.”
- A Drools is a rule engine which uses a rule-based approach to implement an Expert system.
- A forward-chaining engine checks the facts and derives a specific conclusion.
- A backward chaining engine has the set goal, and the engine tries to satisfy it.
- The Rete algorithm is a useful pattern matching algorithm which allows you to implement production rule systems.
- Rules are easy to understand for developers and business analysts.
- The major drawback of using rules engine like Drool is that it requires lots of learning effort required by developers to know this method of programming.