Drools como Business Knowledge integration Platform (BKiP)

Ya directamente sobre Drools 5.x las charlas están totalmente dirigidas a los módulos principales (Expert, Fusion, Flow y Guvnor) de esta versión. Por lo tanto el publico debe estar al tanto de que la versión actual esta dividida en distintos módulos y lo que se trata de mostrar son las características principales de los mismos. En estas charlas, como es obvio, se suele empezar por Drools Expert que es el corazón de la plataforma.

*Con respecto al titulo del post: JBoss o el mismo equipo de Drools en esta versión 5.x paso a ver al framework como una plataforma que nos permite integrar la manera en la que expresamos el conocimiento de nuestro negocio dentro de nuestras aplicaciones. Aquí es donde aparece la sigla BLiP (Business Logic integration Platform -> http://www.cafepress.com/jbossorg.387860288). Esta sigla deja de lado el termino Knowledge, el cual toma un rol importantisimo a partir de la versión 5.x. Por esto, el nombre del post BKiP, que aunque suena feo, refleja el 100% de la intensión de la plataforma.

Drools Expert

Es el punto de comienzo si estamos empezando a conocer Drools. Si viéramos como esta compuesto/estructurado el código del proyecto, veríamos que básicamente Expert esta conceptualmente compuesto por los módulos: drools-core, drools-compiler y drools-api. Por lo tanto si nosotros queremos empezar a trabajar con Drools, las siguientes dependencias serian requeridas dentro de nuestro proyecto (obviamente usando Maven):

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-core</artifactId>
  <version>5.1.0.SNAPSHOT</version>
</dependency>
<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-api</artifactId>
  <version>5.1.0.SNAPSHOT</version>
</dependency>
<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-compiler</artifactId>
  <version>5.1.0.SNAPSHOT</version>
</dependency>

Nuestro siguiente paso, en la creación de aplicaciones, seria definir el modelo de negocio que vamos a utilizar, o que estamos utilizando en nuestra aplicación actual. Este modelo, en el mundo Java se suele expresar en POJOs (Plain Old Java Objects). Este modelo de dominio va a ser nuestro punto de partida para poder expresar nuestras reglas de negocio.

Como podrán imaginar, este tipo de charlas no cubre temas básicos como :

  • Que es una regla de negocio
  • Como se expresan las reglas de negocio
  • Gramática DRL
  • etc

Por lo tanto, la audiencia, debe tener un nivel bastante elevado, sino la charla se puede llegar a hacer inentendible y confundir mas que ayudar.

El segundo paso dentro de la plataforma suele ser Drools Flow; que desde mi punto de vista, la disciplina BPM (Business Process Management) es mucho mas amigable que Complex Event Processing.

Drools Flow

Este modulo esta centrado en la representación del conocimiento como Procesos de Negocio. Permitiéndonos definir, administrar y ejecutar nuestros procesos de negocio de manera integrada con nuestro motor de inferencia. Tanto Drools Flow como Drools Fusion fueron grandes pasos en la version 5.x. Ya que ambos diferencian a Drools de sus competidores propietarios.

Por lo general, en las charlas de Drools Flow se hace mucho énfasis en la inversión de control propuesta a los enfoques clásicos de desarrollo. Donde clasicamente teníamos nuestros procesos de negocio que hacían uso de un motor de reglas para tomar decisiones de manera bastante desacoplada.

interaccionClasicaEntreProcessosYMotorDeInferencia
Interacción clásica

Ahora el concepto se invierte, y deja de lado la visión “Centrada en el proceso y desacoplada” para empezar a jugar con una integración mas fina que nos agranda el abanico de posibilidades a la hora de modelar nuestro conocimiento.

Inversion de Control
Inversión de Control

Hasta aca podemos modelar nuestro conocimiento como:

  • Reglas de negocio: usando la gramática DRL para representar la estructura basica (When/Then) de nuestras reglas de negocio.
  • Procesos de negocio: usando el plugin de Eclipse para modelar nuestros procesos de negocio, los cuales estarán representados en XML.

Utilizando nuestro conocimiento de una manera integrada, sin diferencias en las APIs y sin tener que aprender dos herramientas distintas. Aprovechado las increibles ventajas que nos da esta integración.

Para los que conocen Drools 4.x donde Drools Flow daba los primeros pasos, y era contemplado como la evolución de los agenda-groups, que nos permitían organizar las ejecuciones de nuestras reglas en distintos grupos.

Por ultimo tenemos a Drools Fusion, que agrega otra gran disciplina a este conjunto.

Drools Fusion

La otra gran pata de Drools en la version 5.x es Drools Fusion. Fusion, se encargo de agregarle al motor de inferencia la posibilidad de realizar evaluaciones temporales. Algo que por lo general, no suele ser contemplado por este tipo de productos. La puerta que nos abre esta adición es la posibilidad de inferir sobre flujos de eventos que ocurren durante un segmento de tiempo determinado. Esto no es menor, ya que el campo de Complex Event Processing esta basado en este tipo de análisis e inferencias. En pocas palabras Complex Event Processing, es una disciplina encargada de analizar distintos patrones que ocurren en flujos de eventos, donde un factor importantisimo, es el momento en el cual los eventos ocurren. Como podrán ver en la definición propuesta en wikipedia, Fusion se centra en análisis de patrones y correlación entre eventos. Brindándonos la posibilidad de expresar restricciones temporales en nuestras reglas. Otro punto importante en Fusion, es la posibilidad de enchufar, cualquier stream(flujo) de eventos que se generen por una fuente externa, de forma facil e intuitiva en nuestras reglas.

Este tipo de charlas, por lo general incluyen las funcionalidades básicas, la sintaxis para poder inferir sobre flujos o nubes de eventos y por sobre todo, se habla de los 13 operadores provistos por la versión 5.x. Estos 13 operadores, nos permitirán analizar una amplia gama de posibilidades entre la ocurrencia de nuestros eventos.

Como ya es obvio, todas estas características se incluyen en Drools de manera sencilla y extensible.

Drools Guvnor

Para ir terminando, Guvnor nos ofrece una manera de centralizar todo el conocimiento de nuestra organización en un repositorio central, especialmente preparado para almacenar todo el conocimiento empresarial. Si bien nació como puramente un repositorio, muchas herramientas se le fueron agregando, con el fin de permitir ser una herramienta de creación guiada de conocimiento. Las charlas sobre Guvnor, suelen ser orientadas a usuarios finales, que necesitan tener una forma rápida y sencilla para crear y administrar las reglas de negocio. Estas charlas suelen tratar las nuevas incorporaciones de características que posibilitan administrar todo el ciclo de vida de nuestro conocimiento. Cosas que se han ido agregando son: casos de pruebas para nuestras reglas, tablas de decisión guiadas, y próximamente podremos editar nuestros procesos de negocio por medio de esta herramienta web utilizando la notación BPMN2 que esta volviéndose un estándar de-facto, antes de estar totalmente definida.

Conclusión

Si ya entendemos que queremos hacer con Drools y conocemos los fundamentos con los cuales fue construido, usarlo nos llevara hacia una nueva manera de pensar nuestras aplicaciones. Aprovechando la integración de estas tres ramas: Reglas de Negocio, Procesos de Negocio y Análisis de Eventos Complejos encontraremos nuevas y mejores formas de expresar de manera desacoplada(con respecto al código de infraestructura de nuestras aplicaciones) el conocimiento de nuestro negocio. Resultando en proyectos mas claros, mucho mas mantenibles, donde el conocimiento de negocio puede ser evaluado, cambiado y validado por analistas de negocio.

Sobre estos módulos podría estar escribiendo por un largo rato, pero voy a enfocarme en ejemplos con un estilo mas de tutorial, para que los conceptos puedan irse fijando.

Advertisements

6 thoughts on “Drools como Business Knowledge integration Platform (BKiP)”

  1. Hola,

    Muy interesante tu post, drools parece una buena alternativa en los diferentes campos cubiertos por cada producto de la familia.

    Yo vengo del mundo BPM por lo que mi interés principal se centra en Drools Expert, Drools Guvnor y Drools Flow.

    Sin embargo tengo algunas interrogantes:

    1º Que valor aporta el enfoque de Drools Flow frente a la interacción o relación ‘clasica’ (segun el post) entre un BPMS y un BRMS.

    2º Existe alguna relación entre Drools Flow y jBPM. Que tán maduro es uno con respecto al otro y ambos frente a las demás ofertas de BPMS en el mercado.

    Saludos,
    Angel

    Like

  2. Hola angel como estas? Paso a responder tus preguntas:
    1) la diferencia es fundamental, al no correr separados la interaccion es muy rica y nos Deja aprovecharnos del motor de inferencia en todo momento.
    2) jbpm5 va a seer la mezcla entre jbpm4 y drools flow. En el mercado hay muchas cosas mucha gente entiende distintas cosas por bpms, habria que ver cuales has visto como para hacer una comparacion mas acotada. Saludos

    Like

    1. Hola Mauricio,

      Respecto al primer punto: El argumento general, de la mayoria de BPMS, es que si bien las reglas de negocio y los procesos están intimamente relacionados es mejor gestionarlos por separado dada su diferente naturaleza cambiante y por la existencia de herramientas especializadas en cada una. Todavía no conozco la forma como se relacionan Drools Flow o jBPM con Drools Expert pero parte del argumento general también es que no se debe mezclar las reglas con los procesos.

      Respecto al segundo punto: Los BPMS con los que me he topado directa o indirectamente son: Bizagui, Aura Portal, TIBCO, Intalio, sobre todo el ultimo por su condicion de open source. Tengo planeado revisar jBPM pero creo que mejor esperar hasta la versión 5 porque la combinación puede traer cambios radicales.

      Saludos,
      Angel

      Like

      1. Vamos con el primero punto: creo que vos mismo te das cuenta de que suena contradictorio ese approach. Ya que los procesos y las reglas están relacionados íntimamente. La naturaleza cambiante es la misma, ya que cambia el negocio y por ende cambian las reglas y cambian los procesos. Con respecto a las herramientas, es cierto, hasta ahora ninguna había mezclado ambas disciplinas, y por lo tanto los usuarios tenían que aprender diferentes frameworks para usarlos. Lo cual, a mi entender era una perdida de tiempo y recursos enormes. Con Drools, todo eso y mas esta solucionado ya que se aprovechan todos los puntos anteriores para unificar la forma de administrar y ejecutar el conocimiento de negocio.

        Con respecto al punto 2, yo te recomendaría evaluar Drools Flow, ya que las cosas radicales están ahí y van a seguir estando. Otra cosa importante a tener en cuenta es que tanto jBPM como Drools Flow usan el standard BPMN2 para el modelado y el comportamiento de los procesos de negocio, por lo tanto tienen mucho en común.
        Saludos.

        Like

  3. Hola Mauricio,

    Creo que no vamos a ponernos deacuerdo en el primer punto. El argumento puede ‘parecer’ contradictorio textualmente pero en la práctica es válido, los procesos y la reglas no cambian de la misma forma ni con la misma frecuencia; los cambios en el negocio puede implicar cambios en las reglas o en los procesos o en ambos pero el general las reglas cambian con mayor frecuencia que los procesos y gestionarlas (junto con sus actualizaciones) independiente de los procesos permite que los procesos puedan responder a los cambios del negocio (por cambios en las reglas) sin hacer cambios en la definición de procesos.

    Por otro lado debo precisar que no es mi intención hacer un debate interminable, al margen de la diferencia me agrada y me interesa profundizar en el enfoque de Drools para “unificar la forma de administrar y ejecutar el conocimiento de negocio”. Estoy revisando Drools y la intención de mi comentario inicial fue para establecer contacto, tener un feedback y evaluar algunas iniciativas o proyectos que tengo en mente que involucran uno o más productos de la familia Drools.

    Saludos,
    Angel

    Like

    1. Tus comentarios son totalmente validos, yo lo veo mas como dos visiones distintas. Las cuales ambas funcionan y son validas. Lo importante a mi parecer es que la unión de ambos mundos bien manejada trae mucho mas beneficios sobre el resultado global. Como vos bien decís, los procesos y las reglas pueden cambiar en distinta frecuencia y de forma independiente, yo nunca dije lo contrario y en Droos Flow y Drools Expert eso se sigue respetando. No hace falta cambiar todo cada vez que cambia.
      Por lo general cuando veas y te interiorices en Drools vas a ver que tiene mucho sentido usar todos sus módulos y cambiar el paradigma de como veníamos pensando las aplicaciones.
      Aqui estaré yo, y si puedo aclarar algo o ayudarte en el proceso no dudes en escribir.
      Saludos

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s