E' la Knowledge Base (KB) che definisce la configurazione di un oggetto complesso (Motoriduttore, Gru, Macchina per taglio lamiere, Arredamento di un locale, ....), la composizione di un contratto complesso (linguaggio, clausole dipendenti dalla tipologia piuttosto che dalla Nazione, ...), la generazione di una mailing list, la definizione di una scontistica (dipendenza dalla tipologia di prodotto, dal totale dell' ordine,dalla tipologia di Cliente, ...), la definizione dei fabbisogni, la parametrizzazione di una applicazione complessa, il supporto per la progettazione 3D di un oggetto, la gestione di un Help Desk, ....
La KB è l' insieme degli elementi e delle regole (ad essi applicate) che costituiscono la base di conoscenza da interrogare per avere le risposte utili alla soluzione dei problemi affrontati.
Nel Box si possono identificare le sezioni:
Sul Box deve essere definito almeno un Sheet. Il Sheet può contenere solamente oggetti del Box, non può contenere altri Sheet: di fatto esplode il Box in una struttura a due livelli le cui foglie sono gli oggetti. Una volta pubblicato il Box in ambiente XLSX, i Sheets corrispondono ai Data Sheet di Excel.
Il Sheet viene definito da:
Sono gli oggetti elementari del Box: insieme alle regole concorrono alla definizione della Knowledge Base, e, opportunamente richiamati dalle pagine Web, concorrono alla definizione dell' interfaccia utente. Ogni elemento è definito da un suo identificativo che lo individua univocamente all' interno del Box: l' identificativo è composto da caratteri alfanumerici e in più sono previsti i caratteri '_' e '-'.
Ad ogni elemento possono essere associate delle properties:
Per ogni elemento vengono gestite le date:
Tipologie
List element
E' similabile ad una tabella composta da x-righe ed y-colonne: la prima colonna di ogni riga è la chiave che identifica la riga stessa nell' ambito di tutta la lista. Non sono ammesse chiavi doppie.
Definito da
Base properties
Numeric element
Elemento numerico, tipo double.
Definito da
Base properties
String element
Elemento stringa.
Definito da
Base properties
Required: (TRUE/FALSE) se richiesta o meno la sua compilazione. Di regola si definiscono required gli elementi la cui definizione è basilare per la validazione della soluzione proposta (ad es. se si parla di configurazione, la definizione dell' elemento è richiesta per validare la configurazione: in caso contrario, la configurazione non viene validata);
Visible: (TRUE/FALSE) possibilità di rendere visibile o non visibile l' elemento sulle pagine WEB che definiscono l' interfaccia utente;
Connector Load: significativa nel solo caso in cui il Box che si sta costruendo venga utilizzato da una applicazione integrata con il CRM, riporta le info necessarie per la query da effettuare al fine di leggere i dati dal CRM e riportarli sull' elemento String;
Boolean element
Elemento booleano.
Definito da
Base properties
Date element
Elemento data.
Definito da
Base properties
Message element
Elemento messaggio: definisce la tipologia di messaggio che si vuole visualizzare.
Definito da
Ogni elemento ha delle proprietà standard (Base) direttamente gestite dal motore della BBT e, comunque, gestibili dai metodi: oltre a queste, è possibile aggiungere ulteriori prooprietà (Extra) che possono essere gestite dai Metodi customizzati dell' Utente. Le Extra Properties vengono associate direttamente al Box e, quindi, tutte quelle che si ritiene di utilizzare, devono essere definite a questo livello.
Definita da
Sono previste due EP particolari che hanno l' identificativo seguente:
Obiettivo di questa tipologia di regole è restringere il campo di scelta delle possibili soluzioni a seguito delle scelte effettuate durante l' evoluzione dell' applicativo: si attivano automaticamente quando viene modificato il valore di uno qualunque degli elementi relazionati dalla regola.
Definita da
Per ogni regola vengono gestite le date:
Base properties
Elementi relazionati dalla regola
Gli elementi che possono essere relazionati da una Validity Rule sono:
Nel caso di numerico o colonna di lista di tipo numerico o di stringa o di data, si deve definire anche il ruolo o modalità in base alla quale l' elemento viene verificato.
Role
Attivate su richiesta, hanno l' obiettivo di valorizzare elementi in base al contesto e, di conseguenza, accelerare il percorso verso le possibili soluzioni;
Definita da
Per ogni regola vengono gestite le date:
Base properties
Elementi relazionati dalla regola
La Decision Rule gestisce gli elementi che relaziona in due diverse modalità :
Gli elementi utilizzabili dalla regola sono:
Nel caso di numerico o colonna di lista di tipo numerico o di stringa o di data, si deve definire anche il ruolo o modalità in base alla quale l' elemento viene verificato.
Role
Se si utilizza la rappresentazione grafica per la DR, vanno considerati anche gli elementi seguenti:
Sono procedure in parte standard (in dotazione alla BBT: vedasi relativa documentazione DOCUMENTAZIONE.BBT-RULESENGINE.METODI) ed in parte customizzate dall' utente.
Definito da
Per ogni metodo vengono gestite le date:
Definizione dei parametri
I parametri possono essere sia di input che di output. Ogni parametro è definito da:
Sono le pagine costruite in automatico dalla BBT che definiscono l' interfaccia utente. La pagina può essere vista come una matrice composta da x-righe ed y-colonne: le celle della matrice possono o meno contenere controlli, un solo controllo per cella.
Definita da
Per ogni pagina vengono gestite le date:
Base Properties
Ogni singolo Box è contenuto all' interno di una istanza SQL: una sola istanza può ovviamente contenere più Box.
Le entità definite sono:
Tables
BBT_Box: riporta i Box memorizzati nell' istanza;
BBT_Configuration: riporta le info utili per la configurazione della BBT (ad es. la connessione al CRM);
BBT_ExtraProperties: contiene la definizione delle Extra Properties;
BBT_ExtraPropertiesElement: contiene la definizione delle Extra Properties x i singoli elementi;
BBT_Sheet: contiene la definizione degli elementi Sheet;
BBT_List: contiene la definizione degli elementi List;
BBT_ListColumns: contiene la definizione delle colonne degli elementi List;
BBT_String: contiene la definizione degli elementi String;:
BBT_Number: contiene la definizione degli elementi Number;
BBT_Boolean: contiene la definizione degli elementi Boolean;
BBT_Date: contiene la definizione degli elementi Date;
BBT_Message: contiene la definizione degli elementi Message;
BBT_Method: contiene la definizione dei parametri degli elementi Method;
BBT_MethodParams: contiene la definizione degli elementi Method;
BBT_Page: contiene la definizione degli elementi Web Page;
BBT_PageTabsOrExpanders: definisce l' elenco dei Tabs / Expanders legati alla pagina principale;
BBT_DecisionRule: contiene la definizione degli elementi Decision Rule;
BBT_DecisionRuleColumns: contiene la definizione delle colonne degli elementi Decision Rule;
BBT_ValidityRule: contiene la definizione degli elementi Validity Rule;
BBT_ValidityRuleColumns: contiene la definizione delle colonne degli elementi Validity Rule;
BBT_ListData: contiene i dati dell' elemento List;
BBT_DecisionRuleData: contiene i dati della Decision Rule;
BBT_ValidityRuleData: contiene i dati della Validity Rule;
BBT_PageData: contiene i dati dell' elemento Web Page;
BBT_Localization: contiene le info utili per la localizzazione relativamente alle labels/valori degli elementi definiti sul Box;
BBT_LocalizationManualLabels: contiene le info utili per la localizzazione relativamente alle labels/valori definiti manualmente, non ricavabili dal Box;
Views
View_BBT_AllNames: lista tutti i nomi degli elementi definiti nel Box;
View_BBT_Tree: riporta la struttura del Box suddivisa per Sheet;
TABLES
BBT_Box
ID_Box: id del Box;
Name (varchar 60): nemo del Box. Univoco nell' ipotesi in cui l' istanza contenga più Box;
Description (varchar 254): descrizione del Box;
Revision (varchar 2): revisione. Da '01' a '99';
LastAccess (date): data di ultimo accesso alla struttura del Box. Formato: yyyy-mm-dd;
BoxLocked (boolean): indica che il Box è loccato e non lo si può modificare. Vale 'true' o 'false';
ExportFileXLSX (varchar MAX): nome del file XLSX su cui esportare il modello;
Password (varchar 60): password di lock del Box;
BBT_Configuration
ID_Configuration: id del singolo parametro;
ID_Box: foreign key, punta al Box per il quale è definita la connessione;
SequenceNumber (int): numero del parametro;
Name (varchar 60): nome del parametro;
Value (varchar 1024): valore del parametro;
BBT_ExtraProperties
ID_ExtraProperty: id della proprietà;
ID_Box: foreign key, punta al Box per il quale è definita la proprietà;
Name (varchar 60): nome della proprietà;
Value (varchar MAX): valore della proprietà;
BBT_ExtraPropertiesElement
ID_ExtraPropertyElement: id della proprietà;
ID_ExtraProperty: punta alla proprietà definita a livello Box;
ID_Box: punta al Box per il quale è definita la proprietà;
ID_Element: punta all' elemento padre delle Extra Properties;
Value (varchar MAX): valore della proprietà;
BBT_Sheet
ID_Sheet: id del Sheet;
ID_Box: punta al Box per il quale è definito il sheet;
Name (varchar 60): nome del sheet;
Description (varchar 1024): descrizione del sheet;
BBT_String
ID_String: id della stringa;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la stringa;
Name (varchar 60): nome della stringa;
Description (varchar 1024): descrizione della stringa;
DefaultValue (varchar MAX): valore di default che l' elemento Stringa acquisisce in fase di caricamento del Box;
IsRequired (boolean): (TRUE/FALSE) TRUE se richiesto;
IsVisible (boolean): (TRUE/FALSE) TRUE se visibile;
ConnectorLoad (varchar MAX): query CRM di lettura dato;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_Number
ID_Number: id del numerico;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta il numerico;
Name (varchar 60): nome numerico;
Description (varchar 1024): descrizione del numerico;
DefaultValue (double): valore di default che l' elemento Number acquisisce in fase di caricamento del Box;
Formula (varchar MAX): formula associata al numerico;
IsAutomaticFormula (boolean) (TRUE/FALSE): TRUE se la formula è automatica, cioè scatta quando si modifica il valore del numerico o si modifica uno qualunque dei suoi componenti;
IsRequired (boolean): (TRUE/FALSE) TRUE se richiesto;
IsVisible (boolean): (TRUE/FALSE) TRUE se visibile;
ConnectorLoad (varchar MAX): query CRM di lettura dato;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_Boolean
ID_Boolean: id del booleano;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenut il booleano;
Name (varchar 60): nome booleano;
Description (varchar 1024): descrizione del booleano;
DefaultValue (bool): valore di default che l' elemento Boolean acquisisce in fase di caricamento del Box;
IsRequired (boolean): (TRUE/FALSE) TRUE se richiesto;
IsVisible (boolean): (TRUE/FALSE) TRUE se visibile;
ConnectorLoad (varchar MAX): query CRM di lettura dato;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_Date
ID_Date: id della data;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenut la data;
Name (varchar 60): nome data;
Description (varchar 1024): descrizione della data;
DefaultValue (date): valore di default che l' elemento Date acquisisce in fase di caricamento del Box;
IsRequired (boolean): (TRUE/FALSE) TRUE se richiesto;
IsVisible (boolean): (TRUE/FALSE) TRUE se visibile;
ConnectorLoad (varchar MAX): query CRM di lettura dato;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_List
ID_List: id della lista;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la lista;
Name (varchar 60): nome della lista;
Description (varchar 1024): descrizione della lista;
DefaultValue (varchar MAX): valore di default che l' elemento Stringa acquisisce in fase di caricamento del Box;
IsRequired (boolean): (TRUE/FALSE) TRUE se richiesto;
IsVisible (boolean): (TRUE/FALSE) TRUE se visibile;
IsEditable (boolean): (TRUE/FALSE) TRUE se editabile;
ConnectorLoad (varchar MAX): query CRM di lettura dato;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_ListColumns
ID_ListColumn: id della colonna;
ID_List: foreign key, punta alla Lista per la quale sono definite le colonne;
Sequence (int): sequenza di ordinamento;
Name (varchar 60): nome della colonna;
Type (int): tipologia della colonna;
Description (varchar 1024): descrizione della colonna;
ListValues (varchar MAX): lista dei valori separati da ; se colonna di tipo List;
BBT_Message
ID_Message: id del messaggio;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuto il messaggio;
Name (varchar 60): nome del messaggio;
Description (varchar 1024): descrizione della lista;
Type (int): tipologia del messaggio;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_Method
ID_Method: id del metodo;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la lista;
Name (varchar 60): nome del metodo;
Description (varchar 1024): descrizione del metodo;
ProcedureName (varchar 60): nome della procedura che corrisponde al metodo;
ProcedureClass (varchar 60): classe a cui appartiene la procedura;
ProcedureNamespace (varchar 60): namespace a cui appartiene la classe;
ProcedureAssembly (varchar 60): nome dell' assembly in cui è definito NameSpace;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_MethodParams
ID_Param: id del parametro;
ID_Method: foreign key. Punta al metodo;
Sequence (int): sequenza di ordinamento;
Name (varchar 60): nome del parametro;
ID_Reference: punta all' elemento riferito come parametro;
Value (varchar 60): valore del parametro. Significativo solo se non si fa riferimento ad un elemento del Box;
Type (varchar 24): tipologia del parametro;
BBT_ListData
ID_ListData: id del dato;
ID_List: foreign key, punta alla Lista per la quale sono definite le colonne;
Row (int): numero della riga;
ListDataRow (varchar max): contiene le associazioni ID-Colonna = Valore ID-Colonna = Valore .....
BBT_Page
ID_Page: id dela pagina;
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la lista;
Name (varchar 60): nome dela pagina;
Description (varchar 1024): descrizione della pagina;
Type (int): tipologia della pagina;
NrColumns (int): numero di colonne della matrice che compone la pagina;
IsStartPage (boolean): se è la pagina di partenza;
IsVisible (boolean): se visibile o nascosta;
ExecWhenInit (boolean): quando viene inizializzata si attiva un Metodo o una Decision Rule;
ExecOnChange (boolean): quando viene attivata (è un expander o tab) si attiva un Metodo o una Decision Rule;
ID_MethodRuleInit: punta al Metodo / Regola che viene attivato in fase di Init;
ID_MethodRuleChange: punta al Metodo / Regola che viene attivato in fase di Change;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_PageTabsOrExpanders
ID_TabExpander: id del Tab / Expander;
ID_Page: punta alla pagina a cui sono associati;
Name (varchar 60): nome del Tab / Expander;
Label (varchar 256): label del Tab / Expander;
BBT_PageData
ID_PageData: ID dei dati della pagina;
ID_Page: punta alla pagina a cui sono associati;
Row (int): riga della matrice dati;
Column (int): colonna della matrice dati;
CellData (varchar max): controllo della pagina;
BBT_ValidityRule
ID_ValidityRule: ID della Validity Rule
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la lista;
Name (varchar 60): nome della regola;
Description (varchar 1024): descrizione della lista;
IsActive (boolean): se attiva o meno;
UndefinedAre (varchar 5): può valere "true" o "false" ;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_ValidityRuleColumns
ID_ValidityRuleColumn: id della colonna;
ID_ValidityRule: foreign key, punta alla Regola per la quale sono definite le colonne;
Sequence (int): sequenza di ordinamento;
ID_Element: foreign key, punta all' elemento gestito dalla regola;
ID_ColumnOfElement: foreign key, punta alla colonna dell' Elemento se questo è una Lista;
RoleType (int): tipologia del test da effettuare sull' elemento;
BBT_ValidityRuleData
ID_ValidityRuleData: id del dato legato alla colonna;
ID_ValidityRule: foreign key, punta alla Regola per la quale sono definite le colonne;
ID_ValidityRuleColumn: foreign key, punta alla colonna di cui riporta il contenuto;
NrRow (int): numero di riga della regola;
Sequence (int): sequenza all' interno della riga;
Valore (varchar MAX): valore associato alla colonna nella regola;
BBT_DecisionRule
ID_DecisionRule: ID della Decision Rule
ID_Box: punta al Box;
ID_Sheet: punta al Sheet in cui è contenuta la lista;
Name (varchar 60): nome della regola;
Description (varchar 1024): descrizione della regola;
IsActive (boolean): se attiva o meno;
CreationDate (datetime): data di creazione;
UpdateDate (datetime): data di ultimo aggiornamento;
BBT_DecisionRuleColumns
ID_DecisionRuleColumn: id della colonna;
ID_DecisionRule: foreign key, punta alla Regolaper la quale sono definite le colonne;
Sequence (int): sequenza di ordinamento;
ID_Element: foreign key, punta all' elemento gestito dalla regola;
ID_ColumnOfElement: foreign key, punta alla colonna dell' Elemento se questo è una Lista;
RoleType (int): tipologia del test da effettuare sull' elemento;
IsOutput (boolean): se l' elemento riferito deve essere inizializzato in base al risultato della regola;
BBT_DecisionRuleData
ID_DecisionRuleData: id del dato legato alla colonna;
ID_DecisionRule: foreign key, punta alla Regola per la quale sono definite le colonne;
ID_DecisionRuleColumn: foreign key, punta alla colonna di cui riporta il contenuto;
NrRow (int): numero di riga della regola;
Sequence (int): sequenza all' interno della riga;
Valore (varchar MAX): valore associato alla colonna nella regola;
MethodOrRule: identifica il dato come Method o DecisionRule;
BBT_Localization
ID_Localization: id della localizzazione;
LocalizationKey: testo da localizzare;
ElementName: info che identificano l' elemento che contiene il testo da localizzare;
WhereUsed: in quali controlli è utilizzato quel testo;
KeyType: se valore o label;
ValuesInLang: traduzione nelle lingue previste;
ID_Box: identificativo del Box a cui appartiene la localizzazione;
BBT_LocalizationManualLabels
ID_LocalizationManualLabel: id della localizzazione manuale;
LocalizationKey: testo da localizzare;
ElementName: info che identificano l' elemento che contiene il testo da localizzare;
KeyType: se valore o label;
ID_Box: identificativo del Box a cui appartiene la localizzazione;
VIEWS
View_BBT_AllNames
ID_Element: id dell' elemento;
ID_Box: id del Box a cui l' elemento appartiene;
Name: identificativo o nome dell' elemento;
Type: tipologia dell' elemento )List, String, ...);
Description: descrizione dell' elemento;
CreationDate: data di creazione;
UpdateDate: data di ultima modifica;
View_BBT_Tree
ID_Element: id dell' elemento;
ID_Box: id del Box a cui l' elemento appartiene;
ID_Sheet: id del Sheet a cui appartiene;
Type: tipologia dell' elemento )List, String, ...);
Sheet: identificativo o nome del Sheet a cui appartiene;
Name: ficativo o nome dell' elemento;
CreationDate: descrizione dell' elemento;
UpdateDate: data di ultima modifica;
Description: descrizione dell' elemento;