Drools is a
business rule management system (BRMS) with a
forward and
backward chaining inference-based
rules engine, more correctly known as a
production rule system, using an enhanced implementation of the
Rete algorithm.
Drools supports the Java Rules Engine API (Java Specification Request 94) standard for its
business rule A business rule defines or constrains some aspect of a business. It may be expressed to specify an action to be taken when certain conditions are true or may be phrased so it can only resolve to either true or false. Business rules are intended to a ...
engine and enterprise framework for the construction, maintenance, and enforcement of business policies in an organization, application, or service.
Drools in Apache Kie
Drools, as part of the Kie Community has entered Apache Incubator in January, 2023.
Red Hat Decision Manager
Red Hat Decision Manager (formerly Red Hat JBoss BRMS) is a
business rule management system and
reasoning engine
A semantic reasoner, reasoning engine, rules engine, or simply a reasoner, is a piece of software able to infer logical consequences from a set of asserted facts or axioms. The notion of a semantic reasoner generalizes that of an inference engine ...
for business policy and rules development, access, and change management. JBoss Enterprise BRMS is a productized version of Drools with enterprise-level support available. JBoss Rules is also a productized version of Drools, but JBoss Enterprise BRMS is the flagship product.
Components of the enterprise version:
*
JBoss Enterprise Web Platform – the software infrastructure, supported to run the BRMS components only
*
JBoss Enterprise Application Platform or
JBoss Enterprise SOA Platform – the software infrastructure, supported to run the BRMS components only
* Business Rules Engine – Drools Expert using the
Rete algorithm and the Drools Rule Language (DRL)
* Business Rules Manager – Drools Guvnor - Guvnor is a centralized repository for Drools Knowledge Bases, with rich web-based GUIs, editors, and tools to aid in the management of large numbers of rules.
* Business Rules Repository – Drools Guvnor
Drools and Guvnor are JBoss Community open source projects. As they are mature, they are brought into the enterprise-ready product JBoss Enterprise BRMS.
Components of the JBoss Community version:
* Drools Guvnor (Business Rules Manager) – a centralized repository for Drools Knowledge Bases
* Drools Expert (rule engine) – uses the rules to perform reasoning
* Drools Flow (process/workflow), or
jBPM 5 – provides for workflow and business processes
* Drools Fusion (event processing/temporal reasoning) – provides for
complex event processing
* Drools Planner/OptaPlanner (automated planning) – optimizes automated planning, including
NP-hard
In computational complexity theory, a computational problem ''H'' is called NP-hard if, for every problem ''L'' which can be solved in non-deterministic polynomial-time, there is a polynomial-time reduction from ''L'' to ''H''. That is, assumi ...
planning problems
Example
This example
[http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-expert/html_single/index.html#d0e2676] illustrates a simple rule to print out information about a holiday in July. It checks a condition on an instance of the
Holiday
class, and executes Java code if that condition is true.
rule "validate holiday"
when
$h1 : Holiday( month "july" )
then
System.out.println($h1.name + ":" + $h1.month);
end
The purpose of dialect "
mvel
" is to point the
getter and setters of the variables of your
Plain Old Java Object
In software engineering, a plain old Java object (POJO) is an ordinary Java object, not bound by any special restriction. The term was coined by Martin Fowler, Rebecca Parsons and Josh MacKenzie in September 2000:
The term "POJO" initially den ...
(POJO) classes.
Consider the above example, in which a
Holiday
class is used and inside the circular brackets (parentheses) "
month
" is used. So with the help of dialect "
mvel
" the getter and setters of the variable "
month
" can be accessed.
Dialect "
java
" is used to help us write our Java code in our rules. There is one restriction or characteristic on this. We cannot use Java code inside the "when" part of the rule but we can use Java code in the "then" part.
We can also declare a Reference variable
$h1
without the
$
symbol. There is no restriction on this. The main purpose of putting the
$
symbol before the variable is to mark the difference between variables of POJO classes and Rules.
See also
*
List of JBoss software
*
Semantic reasoner
*
WildFly
References
External links
*
Rule engines
Free and open-source software
Free software programmed in Java (programming language)