Primer caso de éxito (personal) de Drools

Escribo para comentar mi primer experiencia con el uso de drools-expert en el campo comercial.
El desafío era realizar un servicio de búsqueda de servicios de correo entre distintos destinos. El problema con estos es que son muy arbitrarios, cambiantes y además el sistema debía soportar el agregado de distintos servicios menores que realizaran trayectos específicos.
Lamentablemente el post no será introductorio, para comprender lo siguiente deberían tener algo de jerga Drools o bastante imaginación. Igualmente puede ser útil que algo de esto quede en la cabeza mientras estén aprendiendo. Decidid vosotros.
También cabe destacar que todo el desarrollo estuvo basado en la versión 5.0.0.CR1 con lo que puede cambiar en las siguientes versiones.

En el camino, aparte de formar mi cabeza en modo Drools (pensar en activaciones, updates a la working memory, etc), me he topado con algunas cosas a tener en cuenta que no encontré en la documentación:

  • El KnowledgeAgent, daemon que me permitiría el traspaso de compilar las reglas de manera local al uso de guvnor, no soporta el compilado de reglas basadas en un DSL.
  • Los archivos de reglas escritas en DSL, tienen que ser del tipo DSLR y no se pueden mezclar reglas en DSL y reglas en mvel puro.

También como experiencia personal me queda como positivo la capacidad de cambio de reglas a medida que uno va aprendiendo más del lenguaje y cómo funciona. En un principio usamos hasta un RuleFlow para que un conjunto de reglas se ejecute antes que otras (se podría haber usado AgendaGroup también pero eso nos obligaba a setear el foco desde dentro de cada regla) y terminamos volando todo siendo este cambio completamente transparente a la aplicación.
Todo depende de definir un dominio agradable, y unas interfaces piolas, pero en sí, el flujo de evolución de Drools resultó absolutamente gratificante.
Como producto final puedo mostrarle el tipo de reglas que cualquier persona puede llegar a escribir:

regla “CA Cap Fed Rosario”
cuando
hay un envio de “Correo Argentino” con
ciudad de origen “Capital Federal”
ciudad de destino “Rosario”
entonces
el servicio es “Regional”
fin

El próximo paso del proyecto es manejar el flujo de un envío, así que voy a hacer todo lo posible para introducir Rule-Flow, no necesariamente porque haya hecho una comparación contra JBPM (del cual cuento con cierto background), sino que voy a intentar no diversificar tanto las tecnologías utilizadas. En las próximas entregas más novedades.

Advertisements

One Response

  1. no me ha resultado muy util con respecto al título, pero aun así muchas gracias.

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