Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Business Rules Framework offre un motore di inferenza altamente efficiente in grado di collegare regole a oggetti .NET, documenti XML o tabelle di database.
Il motore regole business usa un algoritmo a tre fasi per l'esecuzione dei criteri. Le fasi sono le seguenti:
Partita. Nella fase di confronto, i fatti vengono confrontati con i predicati che utilizzano la tipologia di fatto (riferimenti a oggetti mantenuti nella memoria di lavoro del motore di regole) usando i predicati definiti nelle condizioni della regola. Per motivi di efficienza, la corrispondenza dei pattern avviene su tutte le regole nella politica, e le condizioni condivise tra le regole vengono verificate una sola volta. Le corrispondenze con condizioni parziali possono essere archiviate in memoria di lavoro per accelerare le operazioni successive di corrispondenza dei criteri. L'output della fase di corrispondenza dei criteri è costituito da aggiornamenti all'agenda del motore di regole.
Risoluzione dei conflitti. Nella fase di risoluzione dei conflitti vengono esaminate le regole candidate per l'esecuzione per determinare il set successivo di azioni della regola da eseguire in base a uno schema di risoluzione predeterminato. Tutte le regole candidate trovate durante la fase di corrispondenza vengono aggiunte all'agenda del motore delle regole.
Lo schema di risoluzione dei conflitti predefinito si basa sulle priorità delle regole all'interno di un criterio. La priorità è una proprietà configurabile di una regola in Business Rule Composer. Maggiore è il numero, maggiore è la priorità; pertanto, se vengono attivate più regole, le azioni con priorità più alta vengono eseguite per prime.
Azione. Nella fase di azione vengono eseguite le azioni nella regola risolta. Si noti che le azioni delle regole possono inserire nuovi fatti nel motore delle regole, causando il proseguimento del ciclo. Questa operazione è nota anche come concatenamento in avanti. È importante notare che l'algoritmo non precede mai la regola attualmente in esecuzione. Tutte le azioni per la regola attualmente in esecuzione verranno eseguite prima che la fase di corrispondenza si ripeta. Tuttavia, altre regole sull'ordine del giorno non verranno attivate prima che la fase del gioco inizi di nuovo. La fase di abbinamento può causare la rimozione di tali regole dall'ordine del giorno prima che vengano attivate.
Nell'esempio seguente viene illustrato l'algoritmo a tre fasi di abbinamento, risoluzione dei conflitti e azione.
Regola 1: Valutare il reddito
Rappresentazione dichiarativa:
Il rating di credito di un richiedente deve essere ottenuto solo se il rapporto reddito-prestito del richiedente è inferiore a 0,2.
Rappresentazione SE—ALLORA tramite oggetti aziendali
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)Regola 2: Valutare la valutazione della valutazione del credito
Rappresentazione dichiarativa:
Un richiedente deve essere approvato solo se il rating di credito del richiedente è superiore a 725.
IF— THEN Rappresentazione tramite oggetti business:
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)I fatti sono riepilogati nella tabella seguente.
| Fatto | Campi |
|---|---|
| Domanda – documento XML che rappresenta una domanda di mutuo casa | - Reddito = $ 65.000 - SSN = XXX-XX-XXXX |
| Proprietà : documento XML che rappresenta la proprietà acquistata | - Prezzo = $ 225.000 |
| CreditRating : documento XML contenente il rating di credito del richiedente del prestito | - Valore = 0 - 800 - SSN = XXX-XX-XXXX |
Inizialmente, il motore delle regole, la memoria di lavoro e l'agenda sono vuoti. Dopo che l'applicazione aggiunge i fatti relativi all'applicazione e alla proprietà, la memoria di lavoro e l'agenda del motore di regole vengono aggiornate come indicato di seguito.
| Memoria di lavoro | Ordine del giorno |
|---|---|
| -Applicazione -Proprietà |
Regola 1 |
La regola 1 viene aggiunta all'agenda perché la condizione (Application.Income / Property.Price < 0.2) è stata valutata come vero durante la fase di corrispondenza. Non esiste alcun fatto di CreditRating nella memoria di lavoro, quindi la condizione per la Regola 2 non è stata valutata. Poiché l'unica regola nell'agenda è la regola 1, la regola viene eseguita e quindi scompare dall'ordine del giorno. L'unica azione definita per la regola 1 comporta l'aggiunta di un nuovo fatto (documento CreditRating per il richiedente) alla memoria di lavoro. Al termine dell'esecuzione della regola 1, il controllo torna alla fase di confronto. Siccome l'unico nuovo oggetto da confrontare è il dato CreditRating, i risultati della fase di corrispondenza sono i seguenti.
| Memoria di lavoro | Ordine del giorno |
|---|---|
| -Applicazione -Proprietà - Valutazione del credito |
Regola 2 |
A questo punto viene eseguita la regola 2, con conseguente chiamata di una funzione che invia una lettera di approvazione al richiedente. Al termine della Regola 2, l'esecuzione dell'algoritmo a catena in avanti torna alla fase di corrispondenza. Poiché non ci sono più nuovi fatti da trovare e l'agenda è vuota, il concatenamento in avanti termina e l'esecuzione dei criteri è completa.