Drools
Motivación PDF Imprimir Correo electrónico

Dentro del contexto de aplicaciones empresariales, existe el concepto de regla de negocio. Estas reglas de negocio son definidas propiamente por las directivas de la organización y pueden ser condiciones o parámetros de los diferentes servicios que ésta presta. Algunos ejemplos son:

  • El precio de un minuto de telefonía celular, según el plan al que pertenezca el usuario
  • Las condiciones para aceptar o rechazar una solicitud de crédito
  • Los parámetros para realizar descuentos por compra de productos en combo
  • Las condiciones para admitir a un estudiante en una Universidad

Las reglas evolucionan a lo largo del ciclo de vida de la organización debido a su estrecha dependencia de los motivadores de negocio (e.g. autoservicio, disminución de costos, reducción del ‘time to market’) que puede tener una organización y las fuerzas externas (e.g. competencia, exigencias legales). Por tal razón, el tiempo de respuesta ante dicha evolución debe ser el mínimo posible al igual que el impacto económico ante un cambio en un motivador o en una fuerza externa. Es así como la decisión de mantener dentro del código de una o varias aplicaciones de la empresa las reglas de negocio, tiene gran impacto económico. Específicamente debido a la cantidad de cambios que se puedan requerir, para ajustar el código en las aplicaciones en el momento en que apremia satisfacer una necesidad de negocio basada en una nueva regla o en el cambio de una de éstas.

Los motores de reglas de negocio o BRMS (Business Rule Manager Systems) surgen como una alternativa de solución a la problemática de administrar el cambio de las reglas de negocio en una organización. En particular los BRMS ofrecen:

  • Un repositorio común a las aplicaciones donde se guardan las reglas de negocio versionadas
  • Herramientas que permiten definir estas reglas tanto a usuarios técnicos (desarrolladores) como a usuarios no técnicos (directivos, expertos de negocio)
  • Independencia entre el lenguaje de programación de una aplicación y el lenguaje para expresar las reglas
  • Facilidad para definir las reglas de negocio, por categorías, en un lenguaje de alto nivel propio del motor de reglas
  • Un mecanismo de despliegue de las reglas de negocio

En el desarrollo de este tutorial utilizaremos Drools, que es el administrador de reglas de negocio de JBoss, como también la consola web de administración JBRMS para modificar las reglas.

 
Prerrequisitos PDF Imprimir Correo electrónico

Para la realización de este tutorial es necesario que se encuentre familiarizado con el desarrollo de aplicaciones Java en el ambiente de desarrollo Eclipse. Además se espera un conocimiento mínimo sobre WebServices y desarrollo de aplicaciones Web con tecnología de servlets.

 
Descripción PDF Imprimir Correo electrónico

Se quiere construir un sistema de consulta y préstamo de libros para una biblioteca web. De cada libro la biblioteca almacena: (1) un título, (2) una lista de autores, (3) una referencia bibliográfica que debe ser única, (4) una lista de descriptores y (5) un número de ejemplares disponibles.

El periodo de préstamo de un libro se determina a partir de la evaluación de ciertas características del libro y del usuario que lo solicita. En particular, la biblioteca tiene como motivador de negocio centrarse en los usuarios en el momento de ofrecer sus servicios. Es por esto que, la biblioteca permite el ajuste de periodos de préstamo al comienzo de cada semestre y esporádicamente en el trascurso del semestre. Este ajuste se debe a que con el cambio de libros sugeridos en los programas de los cursos, los profesores se ven en la necesidad de solicitar a la biblioteca un periodo máximo para el préstamo de libros debido al volumen de préstamos que se prevé en el semestre. De esta forma el servicio que se da a los estudiantes y al mismo profesor es a la medida.

Debido a lo anterior, se desea incorporar al sistema de la biblioteca un servicio de préstamos que revise algunas características del libro alquilado y del usuario que solicita el libro y de acuerdo a unas reglas de negocio definidas determine el número de días que se va a prestar el libro. El servicio de préstamos debe estar desacoplado de la aplicación actual con lo cual se quiere que el servicio de cálculo de días de préstamo se exponga como un webservice.

Se requiere además que la tecnología utilizada para la administración de las reglas sea JBoss Drools.

Adicionalmente se tiene como restricción, que el administrador de las reglas del negocio no necesariamente es un programador, por lo cual el mecanismo para modificar las reglas se haga de manera independiente al desarrollo de la aplicación. Para esta restricción se impone que se debe acoplar el Drools - BRMS a la aplicación de la biblioteca para permitir la creación y modificación de reglas desde una interfaz web, totalmente independiente del entorno de desarrollo de la aplicación. En particular, el cambio del periodo de préstamo de libros lo realiza el administrador de la biblioteca.

La descripción de los requerimientos funcionales se encuentra en la sección con dicho nombre.

Arquitectura

De acuerdo con los requerimientos funcionales y no funcionales especificados como parte de este problema, se propone la siguiente arquitectura:

 
Requerimientos Funcionales PDF Imprimir Correo electrónico

Nombre

R1 – Agregar un usuario.

Resumen

Se agrega un nuevo usuario al sistema.

Entradas

Nombre del usuario.

Login del usuario.

Clave del usuario.

Rol del usuario (estudiante, profesor, externo).

Tipo del usuario (usuario, administrador).

Resultados

El sistema de bibliotecas tiene un nuevo usuario.

 

Nombre

R2 – Agregar un libro.

Resumen

Se agrega un nuevo libro al sistema.

Entradas

El nombre del libro.

Referencia del libro.

Número de copias disponible.

Autor del libro.

Palabras claves para futuras búsquedas.

Resultados

El sistema de bibliotecas tiene un nuevo libro

 

Nombre

R3 – Modificar un libro.

Resumen

Se puede modificar un libro.

Entradas

El nombre del libro.

Referencia del libro.

Número de copias disponible.

Autor del libro.

Palabras claves para futuras búsquedas.

Resultados

Los datos del libro identificado con la referencia dada se cambiaron.

 

Nombre

R4 – Alquilar un libro.

Resumen

Un usuario puede alquilar un libro de acuerdo con el resultado de evaluación a la regla de negocio que le aplique.

Entradas

Referencia del libro.

Login del usuario.

Resultados

El libro tiene una copia disponible menos y el usuario en su lista de libros alquilados tiene un libro adicional.

 

Nombre

R5 – Devolver un libro.

Resumen

Los usuarios devuelven los libros que tienen alquilados.

Entradas

Referencia del libro.

Login del usuario.

Resultados

El libro tiene una copia disponible adicional y el usuario en su lista de libros alquilados tiene un libro menos.

 

Nombre

R6– Búsqueda Por Nombre de libro exacto.

Resumen

Se puede buscar libros por el nombre exacto.

Entradas

El nombre del libro.

Resultados

Entrega la lista de los libros que tienen ese nombre.

 

Nombre

R7 – Búsqueda Por Autor de libro exacto.

Resumen

Se puede buscar libros por el nombre del autor exacto.

Entradas

El nombre del autor del libro.

Resultados

Entrega la lista de los libros que tienen ese autor.

 

Nombre

R8 – Búsqueda Por Palabras del autor.

Resumen

Se puede buscar libros por las palabras que describen el autor.

Entradas

Palabra.

Resultados

Entrega la lista de los libros que tienen en su autor esas palabras.

 

Nombre

R9 – Búsqueda Por Palabras Clave.

Resumen

Se puede buscar libros por las palabras que describen el libro.

Entradas

Palabra.

Resultados

Entrega la lista de los libros que tienen en sus palabras claves tengan esas palabras.

 

Nombre

R10 – Búsqueda Por Palabras Clave del nombre.

Resumen

Se puede buscar libros por las palabras que tienen el nombre del libro.

Entradas

Palabra.

Resultados

Entrega la lista de los libros que tienen en su nombre la palabra.

 

 
Requerimientos No Funcionales PDF Imprimir Correo electrónico

Las siguientes restricciones existen sobre la implementación de la solución:

  • Se debe hacer un desarrollo basado en componentes y utilizar servlets y JBoss para el sistema de la biblioteca.
  • El sistema de préstamos debe ser implementado de manera independiente a la aplicación de la biblitoeca y la comunicación entre ambas partes se realiza mediante web services.
  • La administración de las reglas debe hacerse mediante el drools-jbrms (JBoss  Business Rules Management System) y la aplicación debe comunicarse con la interfaz web que ofrece este sistema.<
 
<< Inicio < Anterior 1 2 3 Siguiente > Fin >>

Página 1 de 3