Guía Rápida de JBoss Drools BRMS 4.0.*
El siguiente documento pretende ser un pequeño rayo de luz sobre el infierno del “¿por donde empezar?” teniendo en cuenta la documentación de Drools y en general de JBoss, sin ser tan poéticos esto es una guiá rápida de Jboss Drools BRMS.
En este articulo nos vamos a central en JBoss Drools BRMS (Business Rules Management System).
¿Qué es JBoss Drools BRMS?
Es el componente de Jboss Rules que permite gestionar, almacenar, clasificar, modificar y desplegar en caliente reglas de negocio, que podrán ser invocadas vía servicios web desde aplicaciones Java.
Proporciona un interfaz Web, que facilita la definición de reglas a personas que no trabajan con habitualmente con IDES de desarrollo, principalmente Analista de Negocio y Expertos en Reglas.
Alguna característica técnica interesante: utiliza JCR (JackRabbit) para la gestión del repositorio de reglas o que utiliza el estándar JAAS para la autorización y autenticación.
Requisitos
- Debemos tener un contenedor de servlets: recomiendo Jboss 4.2.2.GA, si quieres Tomcat debeis ver la información de este link.
- Necesitamos como mínimo un JavaBean en un fichero .jar, si quieres utilizar el del ejemplo que puedes descargarlo aquí.
-
Desplegamos el BRMS en el servidor de aplicaciones. En JBoss:
-
Descomprimir el archivo drools-4.0.*-brms.zip.
-
Copiamos el archivo drools-jbrms.war a la carpeta JBOSS_HOME\server\default\deploy.
-
Arrancamos Jboss: JBOSS_HOME\bin\run.bat
-
Accedemos a la aplicación web, para ellos abrimos un navegador e introducimos la siguiente url: http://localhost:8080/drools-jbrms. A continuación nos aparece la siguiente pantalla de login pulsamos el botón Login con User y Password vacíos.
-
Puedes ver cinco opciones en un menú a la izquierda: Info, Rules, Packages, Deployment y Admin.
-
Vamos a crear una categoría, las categorías no son obligatorias, pero es recomendable cuando tenemos gran cantidad de reglas. Para ello vamos al Menú Admin → Create a new category.
-
Introducimos el nombre Candidatos y una descripción, y pulsamos OK. Si no aparece la nueva categoría pulsa sobre la opción Refresh view.
-
A continuación pulsamos sobre la opción del menú “Packages”, la pantalla muestra varias opciones en la parte superior representadas por pequeños iconos, pulsamos sobre el primero. En la siguiente imagen se puede observar:
-
Nos solicita un nombre de paquete y una descripción, p.e candidatoSample y aceptamos.
-
Ahora vamos a asociar un modelo de datos al paquete creado anteriormente, para ello pulsamos sobre el icono de la parte superior con forma de bote, e introducimos un nombre p.e “Modelo” y establecemos a que paquete va a estar asociado “candidatoSample”.
-
Este modelo debe hacer referencia a un jar, el cual contendrá una serie de beans, en nuestro caso un único bean llamado “Persona”. En la siguiente imagen se puede observar los pasos a seguir. Importante: el jar no debe contener los fuentes, ya que nos saltara una excepción al importar las clases: java.lang.ClassFormatError: Incompatible magic value
-
Ya falta menos para escribir una regla. En el árbol de la izquierda hacemos click sobre el paquete, y seleccionamos “Edit Package Configuration”, nos aparece la siguiente pantalla.
-
En la sección “Header” de la pantalla anterior debemos incluir las clases sobre la cuales vamos a definir reglas, así como la definición de variables globales. En nuestro caso añadimos nuestro único bean, importante no incluir ; al final de la linea:
import es.fuenteperez.brms.modelo.Persona
-
Llegados a este punto ya podemos definir una regla, para ello en el menú que se encuentra encima del árbol, pulsamos sobre el icono de Drools si nos ponemos sobre este nos muestra un tooltip con “Create New Rule”.
-
Introducimos el nombre, seleccionamos el paquete, y el formato de la regla, vamos a seleccionar Regla de Negocio (Bussiness rule using guided editor).
-
Vamos a definir una regla que comprueba si la edad de la Persona >= 18 y <=65, y en caso afirmativo, vamos establecer que la persona puede no esta descartada para trabajar. Para ello en primer lugar pulsamos sobre la cruz verde, nos aparece un popup donde vamos a añadir la condición a la regla, en el combo Fact nos aparecen todos las clases de nuestro modelo en nuestro caso solo aparece Persona, la seleccionamos automáticamente añade Persona a la regla.
-
Ahora pulsamos sobre la flecha verde junto a Persona, e introducimos en el campo Variable name una p y pulsamos el botón Set. Con esto nos permitirá referencia el bean que estamos comparando en el THEN de la regla.
-
De nuevo pulsamos sobre la flecha verde junto a Persona, nos permite añadir condiciones sobre un campo, en el combo Add a restriction on a field tenemos todas propiedad del bean Persona seleccionamos edad.
-
Junto a la palabra edad nos aparece un combo con diferentes opciones, el contenido de este dependerá del tipo del campo a comparar en este caso edad es un Integer, seleccionamos greater than or equal to, y pulsamos sobre un el lápiz que esta junto al combo anterior.
-
Nos aparece una pantalla y pulsamos sobre Literal value, donde antes se encontraba el lápiz ahora hay una caja de texto, introducimos 18. Junto a la caja de texto hay un flecha transparente, pulsamos sobre ella, nos aparece otro combo y seleccionamos ‘and less than (or equal to), y como anteriormente pulsamos sobre el lápiz e introducimos 65. La regla nos quedaría como se ve en la siguiente imagen.
-
Ya hemos definido que se debe cumplir (WHEN), ahora vamos lo que sucede si se cumple la condición anterior THEN. Pulsamos sobre la cruz verde y nos aparece una pantalla con el texto Add a new action …, seleccionamos en el combo Set Values on a field on, seleccionamos en el combo [p] que es el bean que hemos tratado en el WHEN, nos añade Set [p].
-
Pulsamos sobre la flecha verde que esta junto al texto anterior y nos aparece un combo con todas la propiedades que tiene Persona, seleccionamos descartado que es un Boolean, y en la caja de texto junto a descartado introducimos false. Pulsamos Validate para ver si la regla es correcta. Además existe la opción View Source donde nos muestra el código de la regla donde personalmente creo que se entiende mejor.
Os recomiendo cacharrear con el JBoss Drools BRMS y ver el resto de opciones que proporciona. En otro articulo contare como acceder desde una aplicación a las reglas definidas en Drools Brms, así como importar reglas que hemos definido fuera de JBoss Drools Brms y alguna cosa más.
Salu2.



Buen artículo, sencillo y directo.
Por favor, emplea mejor los signos de puntuación, porque a veces es difícil entender las explicaciones.
Realmente es la única “queja” a un buen artículo.