drools
is an augmented implementation of Forgy's Rete algorithm
tailored for the object-oriented language of Java. Adapting
Rete to an object-oriented interface allows for more natural
expression of business rules with regards to business objects.
The
drools
engine uses a modified form of the Rete algorithm
called the Rete-OO algorithm. Internally it operates using the same
concepts and methods as Forgy's original but adds some node types
required for seemless integration with an object-oriented language.
At the core,
drools
is purely a Rete-OO algorithmic
engine. The engine works in terms of very abstracted concepts,
such as
Conditions
,
ObjectTypes
and
Extractors
.
Concrete
semantic modules
are used to bind
application-specific semantics tightly to the internals of the
algorithmic engine.
Currently,
drools
supports three semantic modules:
Java
,
Python
, and
Jelly
.