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.