es un completo BRMS (Business Rule Management System), que actualmente se encuentra en la versión 5.1

Hasta la versión 3 (incluida) básicamente consistía en un motor de reglas usando una implementación del Algoritmo RETE.

En la versión 4 se incorpora como producto en Red Hat y comienza una transformación hasta convertirse en lo que es en la actualidad.

Desde la versión 5 Drools se divide en 4 módulos que hacen que el producto vaya más allá del motor de reglas.

es el motor de Reglas, desde la versión 4 más declarativo, con soporte de definición de DSLs,…

es el BRMS: el sistema en el que se almacenan las reglas y que permite explotarlo vía web (y desde el plugin de Eclipse).

es un modulo de WorkFlow (o un BPM si se quiere) que permite añadir a las reglas un flujo de ejecución de estas, además permite integración de tareas manuales, definición visual, BAM, control de los procesos en ejecución,… (he de decir que este módulo me encanta por su sencillez y potencia)

compondría un CEP capaz de tratar los eventos generados desde las reglas y los flujos

Existe un quinto módulo, aún en fase de desarrollo: Planner, que permite definir cualquier scheduling que se nos ocurra :).

Además de estos módulos Drools (el nuevo Drools para mi, que lo sufrió en versiones 3 y anteriores) ofrece un Entorno completo de Desarrollo (un conjunto de plugins para Eclipse) que permiten:

Definir visualmente las reglas (.drl):

Crear DSLs (nuevo lenguaje de reglas) enfocado al negocio concreto: soportando esta sintáxis con autocompletado:

Definición de Flujos de forma visual:

Depuración de las reglas:

Testing de Reglas

Uso de Tablas de decisión

Editor guiado de reglas:

El módulo Guvnor es el repositorio de conocimiento, ofrece un frontal Web GWT que permite realizar vía Web muchas de las operaciones que se pueden realizar desde el entorno de desarrollo: definir reglas, editores guiados, Testing,…

El módulo Drools Flow permite definir visualmente el flujo en el que se ejecutan las reglas de negocio y las acciones asociadas a estas:

Lo más interesante de Flow es que permite integrar y unificar flujos, reglas y eventos.

Con este módulo se consigue una mayor abstracción y mejorar la agilidad del despliegue de la solución de reglas.

Ofrece los nodos típicos de un BPM,

Soportando BPMB 2.0 para el modelado del proceso, WS-HT para las tareas humanas, también permite ampliar los Service Items creando nuevos:

Además Flow permite definir flujos no lineales (eliminando uno de los problemas que solemos encontrarnos con los BPMs comerciales):

Flow ofrece una aplicación web (GWT) en la que pueden visualizarse el estado de los procesos,

además de actuar como interfaz HMI para las tareas manuales.

Flow también tiene un BAM que permite construir informes mediante BIRT para visualizar los KPIs definidos en las reglas y en el flujo