Drools - Scrittura di regole

Se vedi la regola predefinita scritta nel progetto Hello World (Sample.drl), ci sono molte parole chiave utilizzate che spiegheremo ora.

Sample.drl

  • Package- Ogni regola inizia con un nome di pacchetto. Il pacchetto funge da spazio dei nomi per le regole. I nomi delle regole all'interno di un pacchetto devono essere univoci. I pacchetti nelle regole sono simili ai pacchetti in Java.

  • Import statement- Qualunque sia il fatto su cui si desidera applicare la regola, tali fatti devono essere importati. Ad esempio, com.sample.DroolsTest.Message; nell'esempio sopra.

  • Rule Definition- Consiste nel nome della regola, la condizione e la conseguenza. Le parole chiave di Drools sonorule, when, then, e end. Nell'esempio precedente, i nomi delle regole sono "Hello World" e "GoodBye". Ilwhen parte è la condizione sia nelle regole che in thenparte è la conseguenza. Nella terminologia delle regole, ilwhen parte è anche chiamata LHS (lato sinistro) e il then parte come l'RHS (lato destro) della regola.

Esaminiamo ora i termini utilizzati nel file Java utilizzato per caricare i Drools ed eseguire le regole.

base di conoscenza

Knowledge Base è un'interfaccia che gestisce una raccolta di regole, processi e tipi interni. È contenuto all'interno della confezioneorg.drools.KnowledgeBase. In Drools, questi sono comunemente indicati comeknowledge definitions o knowledge. Le definizioni della conoscenza sono raggruppate inknowledge packages. Le definizioni della conoscenza possono essere aggiunte o rimosse. Lo scopo principale della Knowledge Base è archiviarli e riutilizzarli perché la loro creazione è costosa. Knowledge Base fornisce metodi per creare sessioni di conoscenza.

Sessione di conoscenza

La sessione della conoscenza viene recuperata dalla base della conoscenza. È l'interfaccia principale per interagire con Drools Engine. La sessione di conoscenza può essere di due tipi:

  • Sessione di conoscenza apolidi

  • Stateful Knowledge Session

Sessione di conoscenza apolidi

Stateless Knowledge Session è una sessione senza stato che costituisce il caso d'uso più semplice, senza utilizzare l'inferenza. Una sessione senza stato può essere chiamata come una funzione, passandole alcuni dati e quindi ricevendo indietro alcuni risultati. Esempi comuni di una sessione senza stato includono:

  • Validation

    • Questa persona ha diritto a un mutuo?

  • Calculation

    • Calcola un premio ipotecario.

  • Routing and Filtering

    • Filtra i messaggi in arrivo, come le e-mail, nelle cartelle.

    • Invia messaggi in arrivo a una destinazione

Stateful Knowledge Session

Le sessioni stateful durano più a lungo e consentono modifiche iterative nel tempo. Alcuni casi d'uso comuni per sessioni con stato includono:

  • Monitoring

    • Monitoraggio e analisi del mercato azionario per acquisti semiautomatici.

  • Diagnostics

    • Ricerca guasti, diagnostica medica

  • Logistics

    • Tracciamento dei pacchi e provisioning delle consegne

Generatore di conoscenze

L'interfaccia KnoledgeBuilder è responsabile della creazione di un KnowledgePackage dalle definizioni della conoscenza (regole, processi, tipi). È contenuto all'interno della confezioneorg.drools.builder.KnowledgeBuilder. Le definizioni della conoscenza possono essere in vari formati. Se ci sono problemi con la costruzione, il KnowledgeBuilder segnalerà gli errori attraverso questi due metodi:hasErrors e getError.

Il diagramma seguente spiega il processo

Nell'esempio precedente, poiché stiamo prendendo un semplice esempio di sessione di conoscenza senza stato, abbiamo inserito il fatto nella sessione, quindi viene chiamato il metodo fireAllRules () e viene visualizzato l'output.

In caso di una sessione di conoscenza con stato, una volta attivate le regole, l'oggetto sessione di conoscenza con stato deve chiamare il metodo dispose() per rilasciare la sessione ed evitare perdite di memoria.