Ogni Rule Editor necessita di un Rule Repository sottostante, dal quale attingere le regole esposte e su cui salvarne le modifiche apportate.
Formalmente, un Rule Repository è un insieme di oggetti relazionali presenti su un DB o un DataShelf e deve comporsi di almeno due tabelle:
✓ la RuleTable, i cui record corrispondono a regole distinte;
✓ la MetadataTable, contenente opportuni metadati per la definizione e la verbalizzazione delle regole.
La Rule Table deve contenere sempre i seguenti campi:
✓ RuleNameColumn, identificativo univoco di un Rule;
✓ RuleDefinitionColumn, XML contenente gli aspetti definitori di una regola (i.e. Conditions e Trigger Expression);
✓ EnabledColumn, flag che indica se la Rule è abilitata.
Opzionalmente è possibile arricchire la Rule Table con ulteriori colonne, che consentono di:
✓ dinamizzare il comportamento di alcune proprietà del Rule Editor, quali layout grafico, metadati a supporto dell’IntelliSense, sistema di verbalizzazione e modalità di esposizione degli esiti;
✓ gestire il processo di approvazione delle regole e i loro ciclo vita (e.g. versione, utente responsabile, stato di validazione, data e ora dell’ultima modifica).
I nomi delle colonne (necessarie ed opzionali) di una Rule Table possono essere personalizzati dall'utente. |
La Metadata Table può contenere:
✓ il glossario dei termini per la verbalizzazione delle regole;
✓ i metadati necessari a visualizzare l’IntelliSense in fase di modifica degli aspetti definitori di una regola;
✓ i metadati necessari a realizzare la correzione automatica degli errori presenti sull’editor delle Conditions.
In particolare la Metadata Table deve sempre comporsi dei seguenti campi:
✓ ObjName, nome dell’oggetto da mostrare nell’IntelliSense e/o verbalizzare;
✓ ObjType, tipo di oggetto specificato nell’ObjectName;
✓ Field, componente dell’oggetto da mostrare nell’IntelliSense e/o verbalizzare (e.g. nome del campo di un Data Link/Data Engine o parametro di una Function);
✓ FType, eventuale tipo T-SQL del campo specificato in Field;
✓ FSize, eventuale lunghezza del Field in base al FType;
✓ FScale, eventuale precisione del Field in base al FType;
✓ FNullable, booleano che indica se l’oggetto ammette il valore NULL;
✓ FOrder, indice progressivo per l’ordinamento degli oggetti esposti dall’IntelliSense;
✓ Verbalization, espressione in linguaggio naturale con cui verbalizzare l’oggetto.
Il campo ObjType può assumere i valori:
✓ Table, in caso di Data Link o Data Engine del Package;
✓ Function, in caso di Function del Package;
✓ Output, in caso di Output Column da verbalizzare;
✓ Subquery, in caso di query da verbalizzare;
✓ Function Match, in caso di T-SQL Expression articolate da verbalizzare;
✓ Domain, in caso di elementi di un dominio da verbalizzare.
I valori Output, Subquery, Function Match e Domain sono:
✓ associati ad un ObjectName specifico, chiamato Extra;
✓ utilizzati solo nella verbalizzazione delle regole.
Il campo Verbalization si compila in modo analogo alle regole di verbalizzazione del Business Dictionary di un Rule Engine.
Infine, è anche possibile specializzare IntelliSense e verbalizzazione a livello di singola regola, definendo la colonna opzionale RuleNameColumn. Essa contiene l'identificativo univoco della Rule, definito nella Rule Table.
I nomi delle colonne necessarie di una Metadata Table non possono essere personalizzati dall'utente. |