Hacía años (muchos años) que no hablábamos de Drools, con deciros que este post es de 2010…!!!

A día de hoy Drools va por su versión 7.8, se ha integrado con jBPM (como motor de procesos) y forma parte de la suite de Red Hat.

Pero hoy queríamos ver cómo usar tablas de decisión con Drools, de modo que pueda definir las reglas en Excel, y lo veremos con un ejemplo (original aquí):

En el ejemplo queremos definir el descuento para un Cliente en función del tipo de Cliente (individual o empresa) y el número de años como cliente.

Para crearlo:

Tengo mi clase Customer:

Mi Tabla de decisión es un XLS como este:

Que es bastante autoexplicativo:

· Defino los Imports del RuleSet (la clase Customer y CustomerType)

· Defino las condiciones (tantas como quiera) en CONDITION y la acción (ACTION). En el ejemplo en función del tipo de Cliente y de los años que lleva de cliente defino el descuento, que cargo sobre el mismo objeto “customer”

Y finalmente aplico las reglas, por ejemplo en un Test tendría:

El setup donde cargo el recurso y creo la sesión:

Y el lanzamiento de las reglas, en este caso para un cliente personal con 5 años de cliente:

En nuestro proyecto Maven tendré que añadir estas dependencias:

Donde drools-version=7.4.1.Final