DROOLS
-
Upload
sylvester-stewart -
Category
Documents
-
view
46 -
download
0
description
Transcript of DROOLS
![Page 1: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/1.jpg)
DROOLS
![Page 2: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/16.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/17.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/18.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/19.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/20.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/21.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/22.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/23.jpg)
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 < y > respectivamente.
<java:condition> bob.poundsOfCheeseEaten() <= 3 </java:condition>
![Page 24: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/24.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/25.jpg)
Drools4JADE
![Page 26: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/26.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/27.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/28.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/29.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/30.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/31.jpg)
Proyecto
![Page 32: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/32.jpg)
Solicitante
Solicitud: ItinerarioPreferenciasRestricciones Llena solicitud
Envía a Recepcionista
Espera respuesta
![Page 33: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/33.jpg)
Solicitante
Preferencias: ActividadesDías Restricciones:
DineroTiempo
![Page 34: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/34.jpg)
Recepcionista
Recibe solicitudes (Crea Planificador)? Encuentra Redirecciona
Puede recibir
muchas ID conversación
![Page 35: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/35.jpg)
Recepcionista Protocolo Broker Proxy / Intermediario SC00033H
Mensaje proxy:Encapsula acto comunicativoExpresión referencial (Destino)Restricciones (# de agentes)
![Page 36: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/36.jpg)
Planificador
Recibe UNA solicitud Agente Drools Envía itinerario a
Solicitante
Extrae restricciones /
preferencias Invoca proveedores Llena itinerario
![Page 37: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/37.jpg)
Planificador
Protocolo Recruiter Intermediario SC00034H
Responde a SolicitanteReceptor designado
![Page 38: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/38.jpg)
Proveedor
Recibe solicitud ó consulta de servicio
Una por agente
Responde consulta Hace reservación
![Page 39: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/39.jpg)
Proveedor
Transporte Actividad Hospedaje
Cuando hace reservación se llena parte del itinerario
![Page 40: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/40.jpg)
Número de Agentes
N Solicitantes 1 Recepcionista N Planificadores 3 Proveedores
![Page 41: DROOLS](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/41.jpg)
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](https://reader036.fdocuments.ec/reader036/viewer/2022070502/56813696550346895d9e22eb/html5/thumbnails/42.jpg)
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