Il Rule Engine è un oggetto del Package che consente di definire un'ampia varietà di regole di controllo e qualità dei dati.
Al Rule Engine è possibile associare un qualsiasi dataset, rappresentato da un oggetto del Package, sul quale applicare le regole.
Ciascuna regola di controllo, o Rule, è costituita da una o più condizioni, le Rule Condition, che definiscono i controlli da eseguire, il livello di criticità (severity) ed un eventuale messaggio.
Un Rule Engine funziona secondo logiche di tipo:
✓ gerarchico, le Rule Condition possono essere tra di loro annidate;
✓ sequenziale, le Rule Condition sono eseguite in base all'ordine con cui sono scritte e la prima soddisfatta termina il controllo.
Le logiche di funzionamento di un Rule Engine sono analoghe a quelle di un'istruzione CASE in T-SQL. |
Gli aspetti definitori di un Rule Engine sono configurabili mediante i tab:
✓ General, specifica gli elementi base per la costruzione di un Rule Engine;
✓ Rules, consente di aggiungere regole e definirne le condizioni componenti;
✓ Columns, espone, con modalità analoghe ad ogni Data Link, la Column List.
Nel tab General è possibile indicare:
✓ l'Entity, ossia l'oggetto del Package a cui applicare le regole;
✓ il Mode, o tipo di esposizione, degli esiti di applicazione delle regole;
✓ eventuali Severity filter per visualizzare in output solo gli esiti di interesse.
L'Entity viene selezionata mediante la relativa drop-down, che espone tutti i dataset verificabili dal Rule Engine. Il tasto , accanto al campo Entity, consente l'apertura diretta dell'oggetto referenziato.
Sono disponibili due Mode, in cui un Rule Engine può esporre l'output: By Column e By Row.
Nel caso By Column, ogni regola può essere dotata di un proprio set di colonne di output. L'output espone una riga per ogni record del file sorgente processato da almeno una regola. In particolare, detto n il numero di record processati, r il numero di regole e k il numero massimo di colonne di output per una regola, il sistema restituisce un dataset con n righe e al più r · k colonne.
Al contrario, nel caso By Row, tutte le regole devono condividere lo stesso set di colonne in output. L'output espone per ogni record del file sorgente tante righe quante sono le regole che lo processano. In particolare, detto n il numero di record processati, r il numero di regole e k il numero di colonne in output condivise da tutte le regole, il sistema restituisce un dataset con al più n · r righe e k colonne.
A parità di colonne di output e di severity filter impostati, l’esposizione degli esiti By Row potrebbe risultare meno performante rispetto all’analogo By Column. |
I Max Severity filter, consentono di filtrare gli esiti delle regole applicate, selezionando i livelli di criticità impostati nelle Rule Condition. I filtri disponibili sono:
✓ livelli di criticità (Ok, Error o Warning);
✓ filtro Skip;
✓ eventuale filtro, definito manualmente dall'utente nel campo Custom.
In caso di filtro basato su livelli di criticità, l'output mostra tutti e soli i record processati caratterizzati dalla corrispondente severity.
Aggiungendo il filtro Skip, l'output mostra anche tutti quei record per i quali una regola non è applicabile oppure priva di una relativa Rule Condition.
Infine l'applicazione di un custom filter consente di restringere l'output, utilizzando campi propri sia dell'Entity referenziata sia del Rule Engine. Il Custom filter corrisponde, infatti, ad una boolean expression del linguaggio T-SQL, i.e. l'espressione che segue una clausola WHERE.
Nel tab General è presente un ulteriore flag, Materialize. Se attivo (default), il dataset in output viene registrato in una tabella temporanea anziché essere esposto mediante una vista.
Il tab Columns si comporta in modo analogo al corrispettivo tab di un qualsiasi Data Link. Tuttavia il Rule Engine dispone di tre ulteriori Metadata Columns, visualizzabili mediante il provider Extra:
✓ Rule Name, in caso di Rule By Row;
✓ MaxSeverity (massimo livello di criticità) e AllMessages (concatenazione di tutti i messaggi) in caso di Rule By Column.
Il Rule Engine dispone di un ulteriore tab, denominato Preview, il quale mostra un'anteprima dei dati di output (per esattezza i primi diecimila record). Tale anteprima viene elaborata lanciando un'esecuzione parziale del Rule Engine mediante il pulsante Run Preview .
APPROFONDIMENTI E ARGOMENTI CORRELATI