Il meccanismo di analisi della congruenza rileva regole semanticamente in conflitto, ad esempio regole che non vengono mai selezionate, regole che non vengono mai applicate, regole equivalenti, regole ridondanti, regole in conflitto e conflitti tra tabelle decisionali o alberi decisionali.
Il controllo della coerenza è un meccanismo per verificare se le regole non contengono elementi semanticamente in conflitto.
Le ambiguità possono essere trovate in una singola regola o in una serie di regole. Ad esempio:
Una singola regola può contenere condizioni contraddittorie e quindi non si applica mai.
Due regole possono essere applicate allo stesso oggetto e impostare un determinato attributo su due valori diversi. Tali regole sono in conflitto.
Il controllo della coerenza va oltre gli aspetti della sintassi per considerare anche la semantica. Vale a dire, come si comporta la regola durante l'esecuzione. Utilizzando Rule Designer , è possibile scegliere quali verifiche eseguire.
I controlli di congruenza appartengono a una delle categorie seguenti:
Verifica che analizza una singola regola. Queste verifiche vengono attivate quando si crea la regola e quando viene eseguita l'analisi di verifica della congruenza:
Verifica che analizza le regole in relazione ad altre regole. Queste verifiche vengono attivate solo quando si esegue l'analisi di verifica della congruenza.
Il controllo della congruenza riporta i problemi sulle regole:
- Se nel proprio progetto di regole è presente un flusso di regole, il meccanismo di controllo della congruenza riporta i problemi relativi alle regole incluse in un'attività di regola e che potrebbero essere selezionate in fase di runtime.
Il meccanismo confronta solo le regole che potrebbero essere nella stessa attività. Nel caso di un'attività di regola con filtro di selezione dinamico, il meccanismo prende in considerazione le regole potenzialmente selezionate da questa attività. Una regola è considerata potenzialmente selezionabile quando non è possibile stabilire che non può essere selezionata.
- Se non è presente alcun flusso delle regole nel progetto di regole, è probabile che tutte le regole nel progetto vengano selezionate.
- Fornisce un'indicazione della coerenza delle regole, ma non può identificare tutti i potenziali problemi. Un report di controllo della coerenza vuoto non garantisce pertanto che non vi siano problemi nelle regole analizzate.
Per ulteriori informazioni, vedi Selezione della regola di runtime e Sovrascrittura della regola.
Suggerimento: Nella vista di analisi delle regole, è possibile inserire un limite per il numero di risultati restituiti:
Se si dispone di un set di regole con numerosi problemi, l'impostazione di un limite può produrre risultati più rapidamente e generare un rapporto più piccolo e gestibile. L'analisi si ferma quando raggiunge il limite.
Se si desidera che l'analisi continui, fare clic su Continua analisi regola nel rapporto Statistiche.
Regole che non sono mai applicabili
Una regola viene analizzata come mai applicabile quando le sue condizioni non possono mai essere soddisfatte.
In genere, la sintassi di queste regole è corretta, ma le regole contengono errori logici comuni. Ad esempio:
L'operatore errato viene utilizzato per combinare le istruzioni di condizione, ad esempio and invece di or: the category of the customer is Gold and
the category of the customer is Platinum.
I valori vengono invertiti, ad esempio, nella seguente regola the age of the customer is between 70 and
50.
I valori nelle condizioni non sono compresi nell'intervallo consentito.
Regole con violazione di intervallo
Per ridurre il rischio di errore, ad alcuni membri possono solo essere assegnati valori compresi in un intervallo specificato. Ad esempio, il tasso di interesse annuale su un prestito potrebbe essere limitato a valori compresi tra 0 e 10.
Se una regola contiene un'azione che tenta di assegnare un valore che non rientra nell'intervallo consentito, Rule Designer visualizza un errore di violazione dell'intervallo nel report e nell'editor delle regole.
Regole con condizioni equivalenti
Il meccanismo di controllo della coerenza riporta anche le regole in cui le parti della condizione hanno lo stesso significato e in cui le parti dell'azione sono diverse ma non in conflitto.
Le regole con condizioni equivalenti non rappresentano necessariamente una situazione di errore, ma potrebbero essere dei buoni candidati per la fusione.
Regole equivalenti
Le regole equivalenti vengono riportate quando le condizioni e azioni sono le stesse.
Nel seguente esempio, Rule1 e Rule2 sono equivalenti:
Rule1
definizioni
impostare minDiscount su 5
impostare ageDiscount su 10
se
l'età del mutuatario è superiore a 65
allora
impostare lo sconto su minDiscount + ageDiscount
Rule2
se
l'età del mutuatario è di almeno 66 anni
allora
Imposta lo sconto su 15
Anche se la sintassi di queste due regole è diversa, l'analisi delle regole valuta le espressioni numeriche e riporta che le regole sono equivalenti. È quindi possibile eliminarne una.
Nota: spesso si verificano regole equivalenti tra una tabella decisionale creata e una regola esistente.
Regole ridondanti
Quando due regole hanno le stesse azioni, una di esse diventa ridondante quando le sue condizioni sono incluse nelle condizioni dell'altra.
Nel seguente esempio, la parte Else di Rule2 rende ridondante Rule1 :
Rule1
se
la categoria del cliente è Gold
allora
Imposta lo sconto su 10
Rule2
se
la categoria del cliente è Platinum
allora
Imposta lo sconto su 15
else
Imposta lo sconto su 10
Sebbene Rule1 sia corretto, è ridondante e può quindi essere eliminato.
Nota: le regole ridondanti spesso si presentano tra una tabella decisionale creata e una regola esistente.
Regole in conflitto e in conflitto con se stessi
Le regole in conflitto quando le azioni di due regole differenti impostano un valore diverso per lo stesso termine di business (membro). I conflitti si verificano tra due regole quando le condizioni sono equivalenti o coprono gli stessi valori. Ad esempio, considerare le seguenti due regole:
Rule1
se
il report del prestito è approvato
e l'importo del prestito è di almeno 300 000
allora
impostare la categoria del mutuatario su Gold
Rule2
se
l'età dell'ultimo fallimento del mutuatario è inferiore a 1
e la categoria del mutuatario non è Platinum
allora
impostare la categoria del mutuatario su Nessuna categoria
Rule1 e Rule2 entrano in conflitto quando si verifica la seguente situazione:
Il report del prestito è approvato.
L'importo del prestito è di 300 000 o più.
Il mutuatario non ha avuto un fallimento nell'ultimo anno.
E la categoria è tutt' altro che platino.
In queste circostanze specifiche, le regole impostano la categoria del mutuatario su valori differenti. È possibile correggere regole in conflitto modificando le condizioni, eliminando una delle regole o impostando priorità differenti sulle regole.
Una regola è in conflitto con se stessi quando due esecuzioni di una regola assegnano valori differenti allo stesso membro. Ad esempio, una regola che può essere applicata due volte su una determinata memoria di lavoro (e parametri della serie di regole) e imposta valori diversi su un attributo comune è in conflitto. Ad esempio:
se
la categoria del cliente è Gold
allora
Imposta lo sconto del carrello sui punti bonus del cliente
Con questa regola, se ci sono due oggetti customer con bonus points differenti nella memoria di lavoro, la regola viene eseguita due volte e si verifica un conflitto perché le due esecuzioni della regola impostano valori differenti su the discount of the cart.
Conflitti della tabella decisionale
Per controllare le tabelle decisionali e gli alberi decisionali, è necessario abilitare l'opzione Includi tabelle decisionali e alberi decisionali nelle verifiche tra regole.
Quando questa opzione è abilitata, è possibile controllare le regole tra e all'interno delle tabelle decisionali o degli alberi decisionali. L'analizzatore di regole verifica i conflitti, le ridondanze e le equivalenze tra i seguenti elementi:
Due righe della stessa tabella decisionale
Due righe di due tabelle decisionali differenti
Due foglie dello stesso albero decisionale
Due foglie di due diversi alberi decisionali
Una riga di una tabella decisionale e una foglia di un albero decisionale
Una riga di una tabella decisionale e una regola di azione
Una foglia di una struttura ad albero delle decisioni e una regola di azione
Quando questa opzione è disabilitata, questi controlli non vengono eseguiti su tabelle e alberi decisionali, ma solo su regole di azione.
Tuttavia, le tabelle decisionali e le strutture ad albero delle decisioni vengono controllate per le regole e le regole non applicabili con violazione di dominio anche se l'opzione è disabilitata. Questa opzione non influisce sulla sovrapposizione e sui controlli di contiguità rilevati quando si scrivono le regole.