Drools

Drools
Información general
Tipo de programa Sistema de gestión de reglas de negocio
Desarrollador JBoss, Red Hat
Licencia ASL 2
Idiomas inglés
Información técnica
Programado en Java
Plataformas admitidas plataforma Java
Versiones
Última versión estable 7.24.0.Final ( 19 de julio de 2019 (5 años, 1 mes y 15 días))
Enlaces
JBoss Sitio web oficial
Repositorio de código
[editar datos en Wikidata]

Drools (o JBoss Rules) es un sistema de gestión de reglas de negocio (BRMS, por las siglas en inglés de Business Rule Management System) que utiliza un motor de reglas basado en inferencia de encadenamiento progresivo (forward chaining) y de encadenamiento regresivo (backward chaining), más conocido como sistema de reglas de producción, y que utiliza una implementación avanzada del algoritmo Rete.

Es software libre distribuido según los términos de la licencia Apache.

Drools se apoya en el estándar JSR-94 para su motor de reglas de negocio y framework de empresa para construcción, mantenimiento, y el refuerzo de políticas de empresa en una organización, aplicación o servicio.

Drools usa JCR (JackRabbit) para gestionar el repositorio de reglas, y el estándar JAAS para la autorización y autenticación.

Historia

En el año 2001 Bob McWhirter inició y registró The Drools Project en SourceForge. Drools 1.0 no se liberó debido a que era vulnerable a un ataque de fuerza bruta, así que se apostó por Drools 2.0, que estaba basado en el algoritmo Rete, y el proyecto fue movido a Codehaus. Durante el desarrollo de la versión 2.0 en Codehaus, Nobi Y se convirtió en líder del proyecto y se llegó a una versión final 2.0. En este punto, el proyecto se había convertido en el motor de reglas Java de código abierto que contaba con una comunidad de usuarios más fuerte y había comenzado la demanda de servicios comerciales. En octubre de 2005 Drools fue federado en JBoss como parte de su oferta JEMS y renombrado JBoss Rules. Con el apoyo financiero de Red Hat tras la adquisición de JBoss en el año 2006, fue posible reescribir JBoss Rules con una implementación Rete mejorada con herramientas provistas de GUI. A mediados de 2007 hubo una disputa por el nombre Drools, pero a pesar de ello se le seguía conociendo como Drools, y había que referirse a él como "Drools aka JBoss Rules", o "Drools (JBoss Rules)", lo que resultaba confuso.

JBoss Enterprise BRMS

JBoss Enterprise BRMS es un sistema de gestión de reglas de negocio y un motor de razonamiento para la creación, acceso, y gestión de cambio de políticas y reglas de negocio.[1]​ JBoss Enterprise BRMS es una versión de producción de Drools con disponibilidad de soporte de tipo empresarial. JBoss Rules también es una versión de producción Drools, pero JBoss Enterprise BRMS es el producto estrella.[2]

Componentes de la versión empresarial:[3]

  • JBoss Enterprise Web Platform – la infraestructura software, soportada para hacer funcionar únicamente los componentes BRMS
  • JBoss Enterprise Application Platform, o bien, JBoss Enterprise SOA Platform – la infraestructura software, soportada pra hacer funcionar únicamente los componentes BRMS
  • Business Rules Engine – Drools Expert utilizando el algoritmo Rete y el Drools Rule Language (DRL)[4]
  • Business Rules Manager – Drools Guvnor - Guvnor es un repositorio centralizado para Drools Knowledge Bases, que incluye interfaz de usuario web interactivas, editores, y herramientas para ayudar en la gestión de un gran número de reglas.[5]
  • Business Rules Repository – Drools Guvnor

Drools y Guvnor son proyectos open source de la JBoss Community. Forman parte de los productos para empresa JBoss Enterprise BRMS, gracias a que han alcanzado un grado de madurez adecuado.

Componentes de la versión JBoss Community:[6]

  • Drools Guvnor (Business Rules Manager) – un repositorio centralizado para Drools Knowledge Bases
  • Drools Expert (rule engine) – utiliza las reglas para llevar a cabo el razonamiento
  • Drools Flow (process/workflow), o bien, jBPM 5 – proporciona flujo y procesos de negocio
  • Drools Fusion (event processing/temporal reasoning) – proporciona el procesamiento de eventos complejos
  • Drools Planner/OptaPlanner (automated planning) – optimiza la planificación automática, incluyendo problemas de planificación de clase de complejidad NP-hard

Ejemplo

El siguiente ejemplo[7]​ muestra una sencilla regla que muestra en la salida estándar la información acerca de unas vacaciones en julio. Comprueba una condición de una instancia de la clase Holiday, y ejecuta código Java si la condición es cierta.

rule "validate holiday" 
dialect "mvel"
dialect "java"
when
    $h1 : Holiday( month == "july" )
then
    System.out.println($h1.name + ":" + $h1.month);
end

El propósito del dialecto "mvel" es apuntar a los métodos Getter and Setters de las variables de las variables de las clases Plain Old Java Object (POJO). En el ejemplo anterior encontramos la variable "month" de la clase Holiday, incluida entre paréntesis. Gracias al dialecto "mvel" se pueden utilizar los getter y setter de la variable "month".

El dialecto "java" se utiliza para ayudarnos a describir el código Java como reglas, pero con una restricción: no podemos utilizar código Java dentro de la parte "when" de la regla, aunque sí podemos hacerlo en la parte "then".

También podemos declarar una variable de referencia $h1 que no incluya el símbolo $, aunque se suele hacer para distinguir las variables POJO de las variables de las reglas.

Sistemas relacionados

  • CLIPS: herramienta de software de dominio público para construir sistemas expertos.
  • d3web: plataforma libre, open-source para sistemas basados en conocimiento (sistemas expertos).
  • JESS: un motor de reglas para la plataforma Java - es un superconjunto del lenguaje de programación CLIPS.
  • Prolog: un idioma de programación lógica de propósito general.
  • OpenL Tablets: reglas centradas en negocios y BRMS.

Véase también

Referencias

  1. «JBoss Enterprise BRMS». Red Hat. 
  2. «JBoss Enterprise BRMS: Answers to frequently asked questions». JBoss Community. 
  3. «JBoss Enterprise BRMS Platform 5.1». Red Hat. Archivado desde el original el 18 de marzo de 2011. 
  4. «JBoss Enterprise BRMS datasheet». Red Hat. p. 4. 
  5. http://www.jboss.org/drools/drools-guvnor
  6. «Drools 5 - The Business Logic integration Platform». JBoss Community. 
  7. http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-expert/html_single/index.html#d0e2676 (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).

Enlaces externos

  • (en inglés) Sitio oficial
  • (en inglés) Drools
  • (en inglés) Sitio Drools 2.0 en Codehaus
  • (en inglés) Drools.Net en Codehaus
  • (en inglés) Sitio de Drools en Sourceforge
  • (en inglés) Funciones y capturas de pantalla
  • (en inglés) Blog de Drools
  • Guía rápida de JBoss Drools BRMS 4.0
  • Deje decidir al usuario con Drools
  • (en inglés) JBoss Rules
  • (en inglés) Web de Bob McWhirter
  • (en inglés) Web de Mark Proctor
  • (en inglés) JBoss Drools contra JBoss Rules
  • (en inglés) Implementando lógica de negocio con Drools
  • (en inglés) Wiki de Drools
  • (en inglés) Article on Seam security with JBoss Rules
  • (en inglés) Other open source projects based on Drools 5
  • (en inglés) Realtime intelligence using Drools Fusion
  • (en inglés) Drools State of the Union presentation at JBossWorld 2009
  • (en inglés) Editor de reglas Drools en Flex
  • (en inglés) Drools and Predictive Analytics on the Amazon Cloud
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q634004
  • Wd Datos: Q634004