DROOLS

Post on 15-Mar-2016

46 views 0 download

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

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.

Drools

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

www.drools.org

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.

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.

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

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

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.

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 );

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>

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" ) );

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>

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 );

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>

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.

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.

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>

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>

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>

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>

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.

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>

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>

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>

Drools4JADE

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.

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.

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

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.

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.

Proyecto

Solicitante

Solicitud: ItinerarioPreferenciasRestricciones Llena solicitud

Envía a Recepcionista

Espera respuesta

Solicitante

Preferencias: ActividadesDías Restricciones:

DineroTiempo

Recepcionista

Recibe solicitudes (Crea Planificador)? Encuentra Redirecciona

Puede recibir

muchas ID conversación

Recepcionista Protocolo Broker Proxy / Intermediario SC00033H

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

Planificador

Recibe UNA solicitud Agente Drools Envía itinerario a

Solicitante

Extrae restricciones /

preferencias Invoca proveedores Llena itinerario

Planificador

Protocolo Recruiter Intermediario SC00034H

Responde a SolicitanteReceptor designado

Proveedor

Recibe solicitud ó consulta de servicio

Una por agente

Responde consulta Hace reservación

Proveedor

Transporte Actividad Hospedaje

Cuando hace reservación se llena parte del itinerario

Número de Agentes

N Solicitantes 1 Recepcionista N Planificadores 3 Proveedores

Interacciones

Solicitante y RecepcionistaS envía solicitudR recibe y redirecciona

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

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