Condividi tramite


Valutazione delle condizioni ed esecuzione di azioni

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.

Vedere anche

Motore di regole