1 / 42

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

Download Presentation

DROOLS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DROOLS

  2. 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 declaradosson simples objetos Java que pueden ser modificados a través de sus métodos y propiedades públicos.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  18. Archivo de Reglas Base 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 =0 • no-loop: Booleano. Default=yes <rule name="Hello World" salience="10" no-loop="true"> ... ... </rule>

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

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

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

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

  23. Archivo de Reglas Java 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>

  24. Archivo de Reglas Java 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>

  25. Drools4JADE

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

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

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

  29. Drools4JADE • Al descomprimirse crea la siguiente estructura: • doc: contiene la documentación acerca del API • lib: contiene los archivos .jar • src: contiene el código fuente del ambiente.

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

  31. Proyecto

  32. Solicitante • Solicitud: • Itinerario • Preferencias • Restricciones • Llena solicitud • Envía a Recepcionista • Espera respuesta

  33. Solicitante • Preferencias: • Actividades • Días • Restricciones: • Dinero • Tiempo

  34. Recepcionista • Recibe solicitudes • (Crea Planificador)? • Encuentra • Redirecciona • Puede recibir muchas • ID conversación

  35. Recepcionista • Protocolo Broker • Proxy / Intermediario • SC00033H • Mensaje proxy: • Encapsula acto comunicativo • Expresión referencial (Destino) • Restricciones (# de agentes)

  36. Planificador • Recibe UNA solicitud • Agente Drools • Envía itinerario a Solicitante • Extrae restricciones / preferencias • Invoca proveedores • Llena itinerario

  37. Planificador • Protocolo Recruiter • Intermediario • SC00034H • Responde a Solicitante • Receptor designado

  38. Proveedor • Recibe solicitud ó consulta de servicio • Una por agente • Responde consulta • Hace reservación

  39. Proveedor • Transporte • Actividad • Hospedaje • Cuando hace reservación se llena parte del itinerario

  40. Número de Agentes • N Solicitantes • 1 Recepcionista • N Planificadores • 3 Proveedores

  41. Interacciones • Solicitante y Recepcionista • S envía solicitud • R recibe y redirecciona • Recepcionista y Planificador • R envía solicitud • P llena itinerario • P envía a S itinerario

  42. Interacciones • Planificador y Solicitante • P envía itinerario lleno • S recibe y decide si lo quiere mejorar • Planificador y Proveedores • P hace una consulta o solicitud • Proveedor responde / reserva

More Related