Sbava - Sintassi delle regole
Come hai visto, il .drl (file di regole) ha una propria sintassi, esaminiamo una parte della sintassi delle regole in questo capitolo.
Condizioni nelle regole
Una regola può contenere molte condizioni e modelli come:
- Conto (saldo == 200)
- Cliente (nome == "Vivek")
Le condizioni di cui sopra verificano se il saldo del conto è 200 o il nome del cliente è "Vivek".
Variabili nelle regole
Il nome di una variabile in Drools inizia con il simbolo del dollaro ($).
- $ account - Account ()
- $ account è la variabile per la classe Account ()
Drools può funzionare con tutti i tipi Java nativi e persino con Enum.
Commenti nelle regole
I caratteri speciali, # o //, possono essere utilizzati per contrassegnare i commenti su una sola riga.
Per i commenti su più righe, utilizza il seguente formato:
/*
Another line
.........
.........
*/
Variabili globali
Le variabili globali sono variabili assegnate a una sessione. Possono essere utilizzati per vari motivi come segue:
Per i parametri di input (ad esempio, valori costanti che possono essere personalizzati da sessione a sessione).
Per i parametri di output (ad esempio, report: una regola potrebbe scrivere un messaggio in una variabile di report globale).
Punti di ingresso per servizi come la registrazione, che possono essere utilizzati all'interno delle regole.
Funzioni nelle regole
Le funzioni sono una caratteristica comoda. Possono essere utilizzati in condizioni e conseguenze. Le funzioni rappresentano un'alternativa alle classi utility / helper. Per esempio,
function double calculateSquare (double value) {
return value * value;
}
Dialetto
Un dialetto specifica la sintassi utilizzata in qualsiasi espressione di codice che si trova in una condizione o in una conseguenza. Include valori di ritorno, valutazioni, valutazioni inline, predicati, espressioni di salienza, conseguenze e così via. Il valore predefinito èJava. Drools attualmente supporta un altro dialetto chiamatoMVEL. Il dialetto predefinito può essere specificato a livello di pacchetto come segue:
package org.mycompany.somePackage
dialect "mvel"
Dialetto MVEL
MVEL è un linguaggio di espressione per applicazioni basate su Java. Supporta l'accesso al campo e al metodo / getter. Si basa sulla sintassi Java.
Rilevanza
La salienza è una caratteristica molto importante della sintassi delle regole. La salienza viene utilizzata dalla strategia di risoluzione dei conflitti per decidere quale regola attivare per prima. Per impostazione predefinita, è il criterio principale.
Possiamo usare la salienza per definire l'ordine delle regole di tiro. Salience ha un attributo, che accetta qualsiasi espressione che restituisca un numero di tipo int (i numeri positivi e negativi sono validi). Più alto è il valore, più è probabile che la strategia di risoluzione dei conflitti rilevi una regola da attivare.
salience ($account.balance * 5)
Il valore di salienza predefinito è 0. Dobbiamo tenerlo presente quando si assegnano valori di salienza solo ad alcune regole.
Ci sono molte altre caratteristiche / parametri nella sintassi delle regole, ma qui abbiamo trattato solo quelli importanti.
Parole chiave di conseguenza della regola
Le parole chiave di conseguenza della regola sono le parole chiave utilizzate nella sezione "then"Parte della regola.
Modify - Gli attributi del fatto possono essere modificati nel file then parte della Regola.
Insert - In base a qualche condizione, se vera, si può inserire un nuovo fatto nella sessione corrente del Rule Engine.
Retract - Se una particolare condizione è vera in una regola e non vuoi agire diversamente su quel fatto, puoi ritirare il fatto particolare dal motore delle regole.
Note- È considerata una pessima pratica avere una logica condizionale (istruzioni if) all'interno di una conseguenza della regola. La maggior parte delle volte dovrebbe essere creata una nuova regola.