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