Drools - Escritura de reglas

Si ve la regla predeterminada que está escrita en el proyecto Hello World (Sample.drl), hay muchas palabras clave utilizadas que explicaremos ahora.

Sample.drl

  • Package- Cada regla comienza con un nombre de paquete. El paquete actúa como un espacio de nombres para las reglas. Los nombres de las reglas dentro de un paquete deben ser únicos. Los paquetes en reglas son similares a los paquetes en Java.

  • Import statement- Independientemente de los hechos sobre los que desee aplicar la regla, esos hechos deben importarse. Por ejemplo, com.sample.DroolsTest.Message; en el ejemplo anterior.

  • Rule Definition- Consiste en el Nombre de la regla, la condición y la Consecuencia. Las palabras clave de Drools sonrule, when, then, y end. En el ejemplo anterior, los nombres de las reglas son "Hola mundo" y "Adiós". loswhen parte es la condición tanto en las reglas como en la thenparte es la consecuencia. En terminología de reglas, elwhen La parte también se llama LHS (lado izquierdo) y la then parte como el RHS (lado derecho) de la regla.

Ahora veamos los términos usados ​​en el archivo Java usado para cargar Drools y ejecutar las reglas.

Base de conocimientos

Knowledge Base es una interfaz que administra una colección de reglas, procesos y tipos internos. Está contenido dentro del paquete.org.drools.KnowledgeBase. En Drools, estos se conocen comúnmente comoknowledge definitions o knowledge. Las definiciones de conocimiento se agrupan enknowledge packages. Se pueden agregar o eliminar definiciones de conocimiento. El objetivo principal de Knowledge Base es almacenarlos y reutilizarlos porque su creación es costosa. La base de conocimientos proporciona métodos para crear sesiones de conocimientos.

Sesión de conocimientos

La sesión de conocimientos se recupera de la base de conocimientos. Es la interfaz principal para interactuar con Drools Engine. La sesión de conocimiento puede ser de dos tipos:

  • Sesión de conocimientos apátridas

  • Sesión de conocimientos estatales

Sesión de conocimientos apátridas

Stateless Knowledge Session es una sesión sin estado que constituye el caso de uso más simple, sin utilizar inferencias. Una sesión sin estado se puede llamar como una función, pasándole algunos datos y luego recibiendo algunos resultados. Los ejemplos comunes de una sesión sin estado incluyen:

  • Validation

    • ¿Esta persona es elegible para una hipoteca?

  • Calculation

    • Calcule una prima hipotecaria.

  • Routing and Filtering

    • Filtre los mensajes entrantes, como los correos electrónicos, en carpetas.

    • Enviar mensajes entrantes a un destino

Sesión de conocimientos estatales

Las sesiones con estado duran más y permiten cambios iterativos a lo largo del tiempo. Algunos casos de uso comunes para sesiones con estado incluyen:

  • Monitoring

    • Seguimiento y análisis bursátil para compra semiautomática.

  • Diagnostics

    • Localización de averías, diagnóstico médico

  • Logistics

    • Seguimiento de paquetes y aprovisionamiento de entregas

Constructor de conocimiento

La interfaz KnoledgeBuilder es responsable de construir un paquete de conocimientos a partir de definiciones de conocimientos (reglas, procesos, tipos). Está contenido dentro del paquete.org.drools.builder.KnowledgeBuilder. Las definiciones de conocimiento pueden estar en varios formatos. Si hay algún problema con la construcción, KnowledgeBuilder informará los errores a través de estos dos métodos:hasErrors y getError.

El siguiente diagrama explica el proceso

En el ejemplo anterior, como estamos tomando un ejemplo simple de sesión de conocimiento sin estado, hemos insertado el hecho en la sesión, y luego se llama al método fireAllRules () y se ve el resultado.

En el caso de una sesión de conocimiento con estado, una vez que se disparan las reglas, el objeto de la sesión de conocimiento con estado debe llamar al método dispose() para liberar la sesión y evitar pérdidas de memoria.