miércoles, 16 de marzo de 2011

DROOLS - retomamos el Tutorial

entro 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.

Requisitos
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.

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.

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 biblioteca 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.<


No hay comentarios.: