Verifica di consistenza

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:

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:
L'immagine mostra l'impostazione del limite.

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 vengono mai selezionate

Le regole vengono riportate come mai selezionate quando non fanno parte di un'attività di regola e non possono essere selezionate al runtime. Per ulteriori informazioni, vedi Selezione della regola di runtime e Sovrascrittura della regola.

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.