Quarking Drools: How we turned a 13-year-old Java project into a first-class serverless component

“The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.” – Edsger W. Dijkstra Rule-based artificial intelligence (AI) is often overlooked, possibly because people think it’s only useful in heavyweight enterprise software products. However, that’s not necessarily true. Simply put, a rule engine isRead more →

Last call for DMN webinar on October 18, 2018

Are you interested to know more on how Drools provides an open source execution engine with full DMN support at conformance level 3? This is your last change to register for tomorrow’s free webinar presented by Phil Simpson and Denis Gagne on October 18 at 1pm ET. Don’t miss it!

DMN webinar on October 18, 2018

Rule engines are a powerful yet flexible tool to define and implement huge sets of business requirements and constraints. While Drools Rule Language (DRL) may be appealing to define business rules for technically savvy domain experts, a new visual based standard has emerged in the Decision Management space to bridge the gap between technical andRead more →

The Drools Executable Model is alive

Overview The purpose of the executable model is to provide a pure Java-based representation of a rule set, together with a convenient Java DSL to programmatically create such model. The model is low level and designed for the user to provide all the information it needs, such as the lambda’s for the index evaluation. ThisRead more →

Drools Canonical Model – Pure Java Rules

Rule engines, like Drools, typically  make use of a custom languages to define a set of rules. For example, he Drools compiler translates a drl file to an internal representation (the KiePackages) that is subsequently used to generate the ReteOO/Phreak network that will perform the rules evaluation. This internal representation was never really intended toRead more →

Using a rective stream as a data source for Drools

A few months ago we started redesigning the Drools lowest level executable model and making it accessible to end user with a Java 8 API. To demonstrate the flexibility of this approach I tried to integrate it with a reactive stream and in particular to use this stream as a data source for Drools. ToRead more →

Drools Executable Model (Rules in pure Java)

The Executable Model is a re-design of the Drools lowest level model handled by the engine. In the current series (up to 6.x) the executable model has grown organically over the last 8 years, and was never really intended to be targeted by end users. Those wishing to programmatically write rules were advised to doRead more →

(Conditional) Named consequences in Drools 5.5

Until now Drools rules have been always expressed in the form: rule “name”when LHS (conditional element)then RHS (consequence)end Sometimes this could be somewhat limiting and leads to verbose and difficult to be maintained repetitions like in the following example: rule “Give 10% discount to customers older than 60″when $customer : Customer( age > 60 )thenRead more →

Small efforts, big improvements

Some days ago, following some suggestions of Mark Proctor, I spent just a few hours trying to reduce both the memory footprint and the time requested to create an instance of the WorkingMemory, one of the most used core class of Drools. What I basically did was to lazy initialize all the non-strictly necessary dataRead more →