Drools Tutorial: Architecture of Drools Rule Engine and Example

What is Drools?

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.

In this Drools tutorial for beginners, you will learn:

What is Rule?

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.

Syntax:

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:

However, the algorithm mostly used by Drools is the Rete Algorithm.

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

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.

Drools Tools Suite

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:

Important components in Drools

Now in this Drools tutorial, let's learn about important components of Drools.

Here, are essential terms used in Drools:

Architecture of Drools

Drools Rule Engine Architecture
Drools Rule Engine Architecture

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.

Features of Drool

Here are important features of Drool:

How to add Drools plugins in Eclipse

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,

  1. Click on Local
  2. Select folder "org.drools.updatesite/"
  3. 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.

Drools Program Hello World Example

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.

Why use Drools Rule Engine?

Here, are prime reasons for using Drools rules engine:

Disadvantages of Rules Engine

Here, are drawbacks/ cons of using rules engine:

Rules may change over time and will become effective with code changes

Summary

 

YOU MIGHT LIKE: