DROOLS

42
DROOLS

description

DROOLS. Drools. Drools es un motor de reglas Es open source Implementa el algoritmo ReteOO, el cual facilita la integración del motor de reglas con objetos externos existentes - PowerPoint PPT Presentation

Transcript of DROOLS

Page 1: DROOLS

DROOLS

Page 2: DROOLS

Drools

Drools es un motor de reglas Es open source Implementa el algoritmo ReteOO, el

cual facilita la integración del motor de reglas con objetos externos existentes

Los hechos declarados son simples objetos Java que pueden ser modificados a través de sus métodos y propiedades públicos.

Page 3: DROOLS

Drools

“…Drools es la implementación de un sistema experto con encadenamiento hacia delante basado en el algoritmo de RETE…”

www.drools.org

Page 4: DROOLS

Encadenamiento hacia delante Es un proceso de inferencia guiado

por los hechos, donde se busca, de acuerdo a los hechos existentes, activar las reglas que emparejen con esos hechos, y posteriormente ejecutarlas.

Page 5: DROOLS

Ventajas de trabajar con reglas

Eficiente y escalable: Un motor de reglas puede tomar decisiones basado en cientos de miles de hechos, en forma confiable y más eficientemente que si es programado manualmente . Además, no tiene problemas con el incremento de reglas y hechos.

Page 6: DROOLS

Ventajas de trabajar con reglas

Mejorar la productividad y el mantenimiento: Permite tomar decisiones más rápido y eficientes.

Además permite separar el qué hace? del cómo se hace?.

Page 7: DROOLS

Ventajas de trabajar con reglas Repositorios de conocimiento

centralizado: Motores de reglas facilita centralizar el conocimiento y disminuye la dependencia sobre personas especialistas que por algún motivo ya no continué en la empresa (despido, renuncia, jubilación, muerte, etc.).

Page 8: DROOLS

Working Memory

La memoria de trabajo es donde esta contenido todo el conocimiento, cada item de conocimiento es llamado un hecho. También se le conoce como el espacio de hechos, éstos pueden ser declarados, removidos y/o modificados.

Page 9: DROOLS

Manipulación de hechos

Los hechos son declarados dentro de la memoria de trabajo con el método assertObject. Ejemplo:

WorkingMemory memory = ruleBase.newWorkingMemory();

FactHandle handle1 = memory.assertObject( factOne );FactHandle handle2 = memory.assertObject( factTwo );FactHandle handle3 = memory.assertObject( factThree );

Page 10: DROOLS

Manipulación de hechos

Los Hechos también pueden ser declarados mientras las reglas son disparadas, utilizando el método assertObject dentro de la consecuencia de la regla. Ejemplo:

<java:consequence> drools.assertObject( objectOne ); drools.assertObject( objectTwo ); drools.assertObject( objectThree );

</java:consequence>

Page 11: DROOLS

Manipulación de hechos Los hechos declarados dentro de la

memoria de trabajo pueden ser modificados con el método modifyObject. Ejemplo:

WorkingMemory memory = ruleBase.newWorkingMemory();

FactHandle weatherHandle = memory.assertObject(new Weather("rainy" ));

memory.modifyObject( weatherHandle,new Weather( "sunny" ) );

Page 12: DROOLS

Manipulación de hechos

Los hechos también pueden ser modificados mientras las reglas son disparadas, utilizando el método modifyObject dentro de la consecuencia de la regla.

<java:consequence> object.setWeather("sunny");

drools.modifyObject( object ); </java:consequence>

Page 13: DROOLS

Manipulación de hechos

Hechos declarados en la memoria de trabajo pueden ser desmentidos y removidos de la misma usando el metodo retractObject(...). Ejemplo:

WorkingMemory memory =ruleBase.newWorkingMemory();

FactHandle handle = memory.assertObject( factOne );memory.retractObject( handle );

Page 14: DROOLS

Manipulación de hechos

Los hechos también pueden ser removidos mientras las reglas son disparadas, utilizando el método retractObject dentro de la consecuencia de la regla.

<java:consequence> drools.retractObject( object );

</java:consequence>

Page 15: DROOLS

Archivo de Reglas Archivo DRL básico:

<rule-set name="cheese rules“ xmlns="http://drools.org/rules" xmlns:java="http://drools.org/semantics/java">

<rule name="Bob Likes Cheese"> <parameter identifier="bob">

<java:class>org.drools.examples.simple.Bob</java:class> </parameter>

<java:condition>bob.likesCheese() == true</java:condition> <java:consequence>

System.out.println( "Bob likes cheese." ); </java:consequence>

</rule> </rule-set>

Aquí se utilizan 2 módulos semánticos: base semantic module java semantic module.

Page 16: DROOLS

Archivo de Reglas

Base Semantic Module:

El módulo de base semántico provee un lenguaje base para construir conjuntos de reglas en XML.

Por si solo no es capaz de escribir un archivo de reglas válido y completo. Debe utilizarse en combinación con otro módulo semántico como el Java Semantic Module.

Page 17: DROOLS

Archivo de Reglas

Base Semantic Module:

rule-set : Cada archivo DRL debe tener exactamente un elemento rule-set, el cual debe tener un nombre único en la base de reglas.

<rule-set name="cheese rules“ xmlns="http://drools.org/rules" xmlns:java="http://drools.org/semantics/java">

…..

</rule-set>

Page 18: DROOLS

Archivo de ReglasBase Semantic Module:

rule: Cada rul-set debe contener al menos un elemento rule. Cada elemento rule debe poseer un nombre único dentro del rule-set. Opcionalmente puede contener los atributos:salience: Numérico. Default =0no-loop: Booleano. Default=yes

<rule name="Hello World" salience="10" no-loop="true">

... ... </rule>

Page 19: DROOLS

Archivo de Reglas

Base Semantic Module:

Parameter: Cada elemento rule debe contener al menos un elemento parameter el cual debe tener un nombre único para su atributo identifier dentro del ámbito de rule. Requiere un ObjectType como una clase:

<parameter identifier="goodbye"> <class>java.lang.String</class> </parameter>

Page 20: DROOLS

Archivo de Reglas

Base Semantic Module:

Class: Es un ObjectType para usarse dentro de un elemento parameter. Contiene el nombre de una clases propia o una clase disponible de un paquete previamente importado

<class>java.util.HashMap</class><class>HashMap</class>

Page 21: DROOLS

Archivo de Reglas

Java Semantic Module:

El módulo semántico de Java permite el empotrar código Java directamente dentro de los archivos DRL lo que permite utilizar el modelo de clases jerárquico de JAVA.

Page 22: DROOLS

Archivo de Reglas

Java Semantic Module:

xml namespace: Antes de comenzar a escribir reglas utilizando la semántica de Java se debe declarar el xml namespace.<rule-set name="CheesyBob RuleSet" xmlns="http://drools.org/rules" xmlns:java="http://drools.org/semantics/java">…..</rul-set>

Page 23: DROOLS

Archivo de ReglasJava Semantic Module:

Condition: Se utiliza para determinar si una determinada condicion se cumple. Una regla necesita al menos una condición, y cada una debe ser evaluada para poder disparar una consecuencia.

<condition> bob.likesCheese() == true </condition>

Para poner utilizar < , > en la condicion se debe utilizar &lt; y &gt; respectivamente.

<java:condition> bob.poundsOfCheeseEaten() &lt;= 3 </java:condition>

Page 24: DROOLS

Archivo de ReglasJava Semantic Module:

Consequence: Permite utilizar el lenguaje Java semántico para manipular la información en la memoria de trabajo.

<java:consequence> drools.assertObject(cheese);

bob.needsCheese(true); System.out.println( bob.getName() + " really needs some cheese. ");

</java:consequence>

Page 25: DROOLS

Drools4JADE

Page 26: DROOLS

Drools4JADE

Creado para integrar el motor de reglas Drools con el JADE framework

La idea es aprovechar las características de JADE como la comunicación entre agentes para crear e implementar agentes basados en reglas.

Page 27: DROOLS

Drools4JADE

Usando el ambiente JADE se pueden escribir agentes cuyos behaviors estén definidos por reglas.

También es posible definir conjuntos de reglas y permitir el intercambio de hechos y reglas por medio de mensajes ACL.

Page 28: DROOLS

Drools4JADE

Instalación

Se puede bajar desde la dirección http://aot.ce.unipr.it/Drools4JADE y se descomprime en cualquier carpeta.

Se debe agregar a la variable de ambiente CLASSPATH todos los .jar

JADE_HOME

Page 29: DROOLS

Drools4JADE Al descomprimirse crea la siguiente

estructura:doc: contiene la documentación acerca del APIlib: contiene los archivos .jarsrc: contiene el código fuente del ambiente.

Page 30: DROOLS

Drools4JADE

Su principal paquete JAVA es it.unipr.aotlab.d4j el cual está subdividido en los siguientes subpaquetes:

behaviours: son los behaviours JADE necesarios para permitir a los agentes trabajar con el motor Drools.

core: núcleo de clases para interactuar con el motor Drools

exeptions: excepciones disparadas por los behaviours de Drools4JADE

io: permite el abrir y salvar conjuntos de reglas

onto: conceptos ontológicos y acciones para manejar reglas y hechos usando mensajes ACL

tools: GUI para cargar, modificar y salvar reglas

utilities: algunas utilidades, como RuleFactory que permite crear reglas en tiempo de ejecución.

Page 31: DROOLS

Proyecto

Page 32: DROOLS

Solicitante

Solicitud: ItinerarioPreferenciasRestricciones Llena solicitud

Envía a Recepcionista

Espera respuesta

Page 33: DROOLS

Solicitante

Preferencias: ActividadesDías Restricciones:

DineroTiempo

Page 34: DROOLS

Recepcionista

Recibe solicitudes (Crea Planificador)? Encuentra Redirecciona

Puede recibir

muchas ID conversación

Page 35: DROOLS

Recepcionista Protocolo Broker Proxy / Intermediario SC00033H

Mensaje proxy:Encapsula acto comunicativoExpresión referencial (Destino)Restricciones (# de agentes)

Page 36: DROOLS

Planificador

Recibe UNA solicitud Agente Drools Envía itinerario a

Solicitante

Extrae restricciones /

preferencias Invoca proveedores Llena itinerario

Page 37: DROOLS

Planificador

Protocolo Recruiter Intermediario SC00034H

Responde a SolicitanteReceptor designado

Page 38: DROOLS

Proveedor

Recibe solicitud ó consulta de servicio

Una por agente

Responde consulta Hace reservación

Page 39: DROOLS

Proveedor

Transporte Actividad Hospedaje

Cuando hace reservación se llena parte del itinerario

Page 40: DROOLS

Número de Agentes

N Solicitantes 1 Recepcionista N Planificadores 3 Proveedores

Page 41: DROOLS

Interacciones

Solicitante y RecepcionistaS envía solicitudR recibe y redirecciona

Recepcionista y PlanificadorR envía solicitudP llena itinerarioP envía a S itinerario

Page 42: DROOLS

Interacciones

Planificador y SolicitanteP envía itinerario llenoS recibe y decide si lo quiere mejorar

Planificador y ProveedoresP hace una consulta o solicitudProveedor responde / reserva