Valutazione di condizioni ed esecuzione di azioni
Business Rules Framework fornisce un motore a inferenza altamente efficiente in grado di collegare regole a oggetti .NET, documenti XML o tabelle di database.
Il Motore regole di business utilizza un algoritmo in tre fasi per l'esecuzione del criterio. Le fasi sono:
Corrispondenza. In questa fase i fact vengono confrontati con i predicati che utilizzano il tipo di fact (riferimenti all'oggetto mantenuti nella memoria di lavoro del Motore regole di business) mediante i predicati definiti nelle condizioni delle regole. A fini di efficienza, i criteri di ricerca si applicano a tutte le regole nel criterio e le condizioni condivise attraverso le regole sono soddisfatte una sola volta. Le corrispondenze parziali della condizione possono essere archiviate nella memoria utilizzata per accelerare le operazioni successive dei criteri di ricerca. L'output della fase dei criteri di ricerca è costituito dagli aggiornamenti all'agenda del Motore regole di business.
Risoluzione dei conflitti. In questa fase le regole candidate per l'esecuzione vengono esaminate per determinare il set successivo di azioni regola da eseguire in base a uno schema di risoluzione predeterminato. Tutte le regole candidate individuate durante la fase di corrispondenza vengono aggiunte all'agenda del Motore regole di business.
Lo schema predefinito di risoluzione dei conflitti è basato sulle priorità delle regole in un criterio. La priorità è una proprietà configurabile di una regola in Creazione regole di business. Maggiore è il numero, più alta è la priorità. Pertanto, se vengono attivate più regole, vengono eseguite per prime le azioni con priorità superiore.
Azione. In questa fase le azioni vengono eseguite nella regola risolta. Le azioni regola possono asserire nuovi fact nel Motore regole di business, provocando la continuazione del ciclo. Questa azione è conosciuta anche come concatenamento in avanti. È importante notare che l'algoritmo non ha mai la precedenza sulla regola attualmente in esecuzione. Tutte le azioni per la regola che viene attivata verranno eseguite prima della ripetizione della fase di corrispondenza. Altre regole nell'agenda non verranno tuttavia eseguite prima del nuovo inizio della fase di corrispondenza. La fase di corrispondenza può causare la rimozione di quelle regole dall'agenda prima ancora della loro esecuzione.
Nell'esempio seguente viene illustrato l'algoritmo in tre fasi di corrispondenza-conflitto risoluzione-azione.
Regola 1: Valutare il reddito
Rappresentazione dichiarativa:
La posizione creditizia di un richiedente dovrebbe essere ottenuta solo se il rapporto tra reddito e prestiti è inferiore a 0,2.
Rappresentazione IF—THEN utilizzando oggetti business:
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)
Regola 2: Valutare la valutazione del credito
Rappresentazione dichiarativa:
Un candidato dovrebbe ricevere l'approvazione solo se la sua posizione creditizia è superiore a 725.
Rappresentazione IF—THEN utilizzando oggetti business:
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)
I fact sono riepilogati nella tabella seguente.
Fact | Campi |
---|---|
Applicazione - Un documento XML che rappresenta un'applicazione mutuo per la casa | - Reddito = $65.000 - SSN = XXX-XX-XXXX |
Proprietà - Un documento XML che rappresenta la proprietà da acquistare | - Prezzo = $225.000 |
CreditRating - Un documento XML che contiene la posizione creditizia di colui che ha richiesto il prestito | - Valore = 0 - 800 - SSN = XXX-XX-XXXX |
La memoria utilizzata e l'agenda del Motore regole di business inizialmente sono vuote. Dopo che l'applicazione aggiunge i fact Applicazione e Proprietà, la memoria utilizzata e l'agenda del Motore regole di business vengono aggiornate come segue.
Memoria di lavoro | Agenda |
---|---|
-Applicazione -Proprietà |
Regola 1 |
La regola 1 viene aggiunta all'agenda perché la relativa condizione (Application.Income / Property.Price < 0.2) valutata su true durante la fase di corrispondenza. Non esiste alcun fact CreditRating nella memoria utilizzata, pertanto la condizione per la Regola 2 non è stata valutata. Poiché l'unica regola nell'agenda è la Regola 1, la regola viene eseguita e poi sparisce dall'agenda. La singola azione definita per la Regola 1 dà origine all'aggiunta di un nuovo fact (documento CreditRating per il richiedente) alla memoria utilizzata. Completata l'esecuzione della Regola 1, il controllo ritorna alla fase di corrispondenza. Poiché l'unico nuovo oggetto di cui ottenere la corrispondenza è il fact CreditRating, i risultati della fase di corrispondenza sono i seguenti.
Memoria di lavoro | Agenda |
---|---|
-Applicazione -Proprietà - CreditoRating |
Regola 2 |
A questo punto viene eseguita la Regola 2 e viene di conseguenza chiamata una funzione che invia una lettera di approvazione al richiedente. Al termine della Regola 2, l'esecuzione dell'algoritmo di concatenamento in avanti torna alla fase di corrispondenza. Poiché non vi sono più nuovi fact di cui ottenere la corrispondenza e l'agenda è vuota, il concatenamento in avanti termina e l'esecuzione del criterio è completa.