Progetto: Riferimento: ARPA Fonte Dati Documentazione Database ARPA Fonte Dati Regione Toscana Documentazione Database _________________________ 1 Progetto: Riferimento: Redatto da ARPA Fonte Dati Documentazione Database L. Folchi (TAI) Rivisto da Approvato da Versione Data emissione Stato 2 1.0 08/10/13 FINAL Progetto: Riferimento: Versione Data 1,0 3 ARPA Fonte Dati Documentazione Database Descrizione 08/10/13 Versione Iniziale Progetto: Riferimento: ARPA Fonte Dati Documentazione Database Sommario 1 INTRODUZIONE ................................................................................................... 6 2 TABELLE ............................................................................................................... 6 2.1 FONTEDATI ....................................................................................................... 8 2.2 ATTRIBUTE ....................................................................................................... 9 2.3 ATTRIBUTOVALORE .......................................................................................... 9 2.4 ............................................................................................................................ 10 2.5 ATTRIBUTECOLLECTOR_ATTRIBUTE ............................................................... 10 2.6 USERDOMAINDEFINITION .............................................................................. 10 2.7 USERDOMAIN ................................................................................................. 10 2.8 ABSTRACTCUSTOMVALIDATOR ....................................................................... 11 2.9 COMPILATION ................................................................................................ 11 2.10 COMPILATION_ATTRIBUTECOLLECTOR ....................................................... 12 2.11 RESPONSE ................................................................................................... 12 2.12 RESPONSEVALUEABSTRACT ........................................................................ 12 2.13 SERVERNODE .............................................................................................. 13 2.14 SERVERNODELOG ........................................................................................ 13 2.15 SERVERNODE_DATASOURCE ....................................................................... 13 3 VISTE ................................................................................................................. 14 3.1 COMPILAZIONI_AC_INCOMPLETE .................................................................. 14 3.2 STATO_COMPILAZIONI .................................................................................. 15 3.3 COMPILAZIONI ............................................................................................... 15 4 ESEMPIO DI INSERIMENTO DI UNA COMPILAZIONE.......................................... 15 4.1 VERIFICA ESISTENZA DELLA COMPILAZIONE ................................................. 16 4.2 DEFINIZIONE DELLA RELAZIONE CON LA COLLEZIONE ATTRIBUTI ................ 16 4.3 DEFINIZIONE DELLA RELAZIONE CON L’ATTRIBUTO ...................................... 17 4.4 CONTROLLO DEL NUMERO DELLE RISPOSTE ................................................... 17 4.5 DEFINIZIONE DELLA RISPOSTA ..................................................................... 18 4.5.1. ATTRIBUTO NON DI TIPO SELEZIONE [TIPO =T|D|N] ............................. 18 4.5.2. ATTRIBUTO È DI TIPO SELEZIONE [TIPO=S] ........................................... 18 4 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database Indice delle figure Figura 1: Schema del database per Arpa Fonte Dati ______________________________________________________ 8 Figura 2: Viste di database _________________________________________________________________________ 14 5 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database 1 Introduzione Il presente manuale ha lo scopo di illustrare lo schema del database utilizzato dalla applicazione Arpa Fonte Dati [afd]. 2 Tabelle Le tabelle utilizzate dal sistema afd sono riportate di seguito e le dividiamo in tre gruppi. Il primo gruppo sono le tabelle utilizzate per la definizione della fonte dati e quindi alimentate dalla applicazione di amministrazione. 1. FONTEDATI 2. ATTRIBUTE 3. ATTRIBUTOVALORE 4. ATTRIBUTECOLLECTOR 5. ATTRIBUTECOLLECTOR_ATTRIBUTE 6. USERDOMAINDEFINITION 7. USERDOMAIN 8. ABSTRACTCUSTOMVALIDATOR Il secondo gruppo sono le tabelle utilizzate nella fase di compilazione della fonte dati. 9. COMPILATION 10.COMPILATION_ATTRIBUTECOLLECTOR 11.RESPONSE 12.RESPONSEVALUEABSTRACT Infine il terzo gruppo sono le tabelle di servizio utilizzate dal nodo server o afd_exporter. 6 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database 13.SERVERNODE 14.SERVERLOG 15.SERVERNODE_DATASOURCE La base di tutto il sistema è la tabella FONTEDATI che contiene la definizione, appunto, delle fonti dati [Figura 1]. 7 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database Figura 1: Schema del database per Arpa Fonte Dati 2.1 FONTEDATI Elenco dei campi: • ID: chiave primaria • COMPILATIONENABLED: flag per indicare se la fonte può essere compilata 8 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database • CREATIONDATE: data di creazione della fonte dati • IDENTIFICATIVO: identificativo della fonte dati che viene utilizzata nell’RFC • LASTUPDATE: data di ultimo aggiornamento • NOME: nome utilizzato nella parte GUI • NOTE: note • PUBLISHED: flag per indicare se la fonte dati è disponibile verso l’RFC 2.2 ATTRIBUTE Elenco dei campi: • ID : chiave primaria • CHIAVE : etichetta dell’attributo che viaggia sull’RFC • DATAFINEVALIDITA : deprecato • DESCRIZIONE : Etichetta utilizzata dalla parte di GUI • ESPORTABILE : flag per indicare che l’attributo può essere utilizzato dal RFC • MASSIMONUMERORISPOSTE: numero massimo di risposte per l’attributo • MOSTRAMESSAGGIOVALIDATORE: flag per indicare se deve essere visualizzato il messaggio del validatore, se assegnato il validatore • OBBLIGATORIO: flag per indicare che l’attributo è obbligatorio • TIPO: carattere per indicare il tipo di Attibuto o T: testo; o N: numerico; o S: selezione; o D: data. • VISIBILE : flag per indicare se l’attributo deve essere compilato da un operatore o se è un attributo costante con valore precompilato; • FONTEDATI_ID : chiave esterna alla fonte dati, obbligatoria • VALIDATORE_ID: chiave esterna al validatore, assegnato solo per attributi il cui tipo è T [testo] • DEFAULTVALUE: valore di default, obbligatorio se l’attributo non è visibile. 2.3 ATTRIBUTOVALORE Elenco dei campi: • ID: chiave primaria • CHIAVE: chiave dell’attributo utilizzato dal RFC 9 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database • DEFAULTSELECTION: deprecato • VALORE: valore utilizzato dalla parte grafica • ATTRIBUTEID: chiave esterna all’attributo, ma solo se l’attributo è di tipo S [Selezione] 2.4 Elenco dei campi: • ID: chiave primaria • ATTRIBUTESPERROW: deprecato • DESCRIPTION: Descrizione della collezione • DOMAINTYPE: Descrizione del dominio utente a cui riferisce la collezione1 • NAME : Nome della collezione • FONTEDATI_ID: chiave esterna alla fonte dati, obbligatoria • POSITION: posizione della collezione all’interno della fonte dati, definito in maniera automatica dal sistema. 2.5 ATTRIBUTECOLLECTOR_ATTRIBUTE Elenco dei campi: • ATTRIBUTECOLLECTOR_ID: chiave esterna per l’attributecollector • ATTRIBUTE_ID: chiave esterna per l’attribute • ATTRIBUTES_ORDER: ordine di associazione attributecollector-attribute 2.6 USERDOMAINDEFINITION Elenco dei campi: • ID: chiave primaria • LASTUPDATE: data utlimo aggiornamento • NAME: nome, che verrà eventualmente riferito dal campo domaintype della tabella ATTRIBUTECOLLECTOR • FONTEDATI_ID: chiave esterna alla fonte dati. 2.7 USERDOMAIN Elenco dei campi: 1 Per il dominio utenti viene utilizzata la descrizione perché i domini utenti posso essere sia entità di database che istanze di bean definite al di fuori del database, quindi per unificarne la gestione, l’associazione tra Collezioni e Domini utenti viene fatta per “nome del dominio”. 10 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database • ID: chiave primaria • FISCALCODE: Codice fiscale censibile all’interno del dominio utenti, obbligatorio • LASTUPDATE: data ultimo aggiornamento • NAME: nome • SURNAME: cognome • USERDOMAINDEFINITION_ID: chiave esterna alla definizione del dominio utenti USERDOMAINDEFINITION 2.8 ABSTRACTCUSTOMVALIDATOR Elenco dei campi: • ABSTRACT_VALIDATOR_TYPE: tipo del validatore, utilizzato solo regex_validator • ID: chiave primaria • MESSAGE: Messaggio da visualizzare in caso di mancata validazione • NAME: nome del validatore • REGEX_PARAM: Regular Expression da applicare per validare il testo. 2.9 COMPILATION Elenco dei campi: • ID: chiave primaria • CODICEFISCALE: codice fiscale censito • LASTUPDATE: data ultimo aggiornamento della compilazione • LOCKTIME: tempo limite entro il quale la compilazione non può essere rispedito, caso in cui l’invio dell’aggiornamento non ha dato risposte, • FONTEDATI_ID: chiave esterna alla fonte dati • READYTOSEND: flag per indicare che la compilazione è stata modificate e può partire l’RFC 156 • REMOVABLE: flag per indicare che la compilazione viene rimossa, quindi dop l’RFC 156 il record deve essere rimosso • COGNOME: cognome dell’utente censito • NOME: nome dell’utente censito 11 Progetto: Riferimento: 2.10 ARPA Fonte Dati Documentazione Database COMPILATION_ATTRIBUTECOLLECTOR Elenco dei campi: • COMPILATION_ID: chiave esterna a compilation • ATTRIBUTECOLLECTOR_ID: chiave esterna all’AttributeCollector • COLLECTORS_ORDER: ordine di assegnazione dell’attributecollector a compilation, definito automaticamente 2.11 RESPONSE Elenco dei campi: • ID: chiave primaria • LASTUPDATE: ultimo aggiornamento della risposta • ATTRIBUTE_ID: chiave esterna per attribute che riferisce la risposta • COMPILATION_ID: chiave esterna a compilation • ATTRIBUTECOLLECTOR_ID: chiave esterna a attributecollection 2.12 2 RESPONSEVALUEABSTRACT Elenco dei campi: • RESPONSE_VALUE_ABSTRACT_TYPE: tipologia della risposta, indica se "response_value_textual" oppure "response_value_selection" • ID: chiave primaria • RESPONSE_VALUE_TXT: in caso di risposta tipo "response_value_textual" riporta il valore inserito • RESPONSE_VALUE_DBL: deprecato • RESPONSE_VALUE_DATETIME: deprecato3 • RESPONSE_ID: chiave esterna alla tabella response • RESPONSE_VALUE_ID: chiave esterna alla tabella attributovalore se il tipo è "response_value_selection" • LASTUPDATE: data ultimo aggiornamento 2 La risposta viene inserita a fronte di una compilazione, di un attributo ed una collezione di attributi, perché lo stesso attributo può essere inserito in più collezioni è quindi necessario distinguere a fronte di quale collezione viene risposto ad un attributo 3 I campi response_value_dbl e response_value_datetime non vengono utilizzati perché queri tipi di dato sono comunque gestiti come campi testo. 12 Progetto: Riferimento: 2.13 ARPA Fonte Dati Documentazione Database SERVERNODE Elenco dei campi: • ID : chiave primaria • ACTIVE: flag per nodo attivo • ALLDATASOUCEMANAGEMENT: flag per indicare se il nodo gestisce tutte le fonti dati • CODE: nome del servernode • DESCRIPTION: breve descrizione • LASTKEEPALIVE : data ultimo keepAlive • LASTUPDATE: data ultimo aggiornamento • STARTUPTIME: data startup del nodo Per nodo si intende l’istanza di afd_exporter in esecuzione. Possono esistere più afd_exporter, e quindi servernode, che gestiscono una particolare insieme di fontidati. 2.14 SERVERNODELOG Elenco dei campi: • ID: chiave primaria • CREATIONDATE: data di creazione del record • STATUS: registrazione esito operazione, se positivo [0] o negativo[1] • EVENTTYPE: tipo evento RFC146 [0] o RFC156 [1] • MESSAGE: messaggio ricevuto [RFC156] o restituito [RFC146] • COMPILATION_ID: chiave esterna alla compilazione per cui viene fatta la comunicazione • DATASOURCE_ID: chiave esterna alla fonte dati compilazione per cui viene fatta la comunicazione • SERVERNODE_ID: chiave esterna al servernode che stà eseguendo le comunicazioni 2.15 SERVERNODE_DATASOURCE Elenco dei campi: • SERVERNODE_ID: chiave esterna per servernode 13 Progetto: Riferimento: • ARPA Fonte Dati Documentazione Database DATASOURCE_ID: chiave esterna per fontedati. I record in questa tabella esistono solo se esiste un servernode dedicato ad una o più fonti dati. Figura 2: Viste di database 3 Viste Per poter sfruttare la potenza del database nell’applicare determinati filtri ed ordinamenti sono state introdotte tre viste, una dipendente dall’altra: 1. COMPILAZIONI_AC_INCOMPLETE 2. STATO_COMPILAZIONI 3. COMPILAZIONI Vediamo di seguito il dettagli odi ogni vista. 3.1 COMPILAZIONI_AC_INCOMPLETE Elenco dei campi: • COMPILATION_ID: chiave esterna alla tabella compilation • ATTRIBUTECOLLECTOR_ID: chiave esterna alla tabella attributecollector per cui esistono degli attributi obbligatori non compilati Se tutte le collezioni attributi, riferite nelle compilazioni, hanno gli attributi obbligatori con risposte, la vista in questione risulta vuota, altrimenti vengono elencate le collezioni attributi parzialmente compilati. 14 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database 3.2 STATO_COMPILAZIONI Elenco dei campi: • ATTRIBUTECOLLECTOR_ID: chiave esterna alla tabella attributecollector • COMPILATION_ID: chiave esterna alla tabella compilation • COMPILATO: flag per indicare se la compilazione è completa, 1 se è completa, 0 altrimenti In questa view vengono elencate tutte le attributecollector coinvolte nelle compilazioni. 3.3 COMPILAZIONI Elenco dei campi: • ID : chiave primaria • CODICEFISCALE: codice fiscale censito • LASTUPDATE: ultimo aggiornamento della compilazione • LOCKTIME: tempo di lock della compilazione per il re-invio dell’RFC156 • FONTEDATI_ID: chiave esterna alla fontedati • READYTOSEND: flag di pronto all’invio con RFC156 • REMOVABLE: flag per indicare che la compilazione è cancellata • COGNOME: cognomen censito • NOME: nome censito • ATTRIBUTECOLLECTOR_ID: chiave esterna ad attributecollector • COMPILATION_ID: duplicato della chiave primaria • COMPILATO: flag per indicare se l’ attributecollector è completamente compilato Questa view viene utilizzata per ottenere gli ordinamenti sul completamento delle compilazioni delle attributecollector. 4 Esempio di inserimento di una compilazione Nel caso in cui sia necessario inserire una compilazione con dei processi batch, e quindi fuori dalla navigazione logica della portlet di compilazione, descriviamo di seguito i passi da seguire. 15 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database Parametri per inserire la compilazione: • Codice fiscale da censire, obbligatorio • Nome • Cognome • idFD : Identificativo univoco della fonte dati, obbligatorio • Descrizione o identificativo univoco della collezione attributi, obbligatorio • Descrizione o identificativo univoco dell’attributo, obbligatorio • Risposta, obbligatorio. 4.1 Verifica esistenza della compilazione Per la definizione della compilazione si inizia con l’inserire, o recuperare, l’utenza censita. 1. Select id from afd.compilation where codicefiscale=’AAAAAA50A01A111A’ and fontedati_id=<idFD> Se l’operazione non restituisce risultato, l’utente deve essere censito con la segunte operazione: 2. insert into compilation(codicefiscale, nome, cognome, fontedati_id, readytosend, removable) values (’AAAAAA50A01A111A’, ‘nome’, ‘cognome’, idFD, true, false); Recuperare l’identificativo come al passo 1, indichiamo da adesso idComp. 4.2 Definizione della relazione con la Collezione Attributi Per ogni fonte dati compilata è anche necessario anche definire quale Collezione attributi è coinvolta. Se si ha la descrizione della Collezione Attributi è necessario risalire alla chiave univoca: 3. select id from afd.attributecollector where lower(nome) like lower(‘%<descrizione>%’) Chiamiamo a questo punto l’identificativo idAC. A questo punto è necessario eseguire la seguente query: 4. insert into COMPILATION_ATTRIBUTECOLLECTOR values (<idComp>, <idAC>, (select max(COLLECTORS_ORDER)+1 from 16 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database COMPILATION_ATTRIBUTECOLLECTOR where COMPILATION_ID=<idComp> and ATTRIBUTECOLLECTOR_ID = <idAC>)) 4.3 Definizione della relazione con l’Attributo A questo punto è necessario riferire l’attributo per cui si deve aggiungere la risposta. Se si ha la chiave (stringa utilizzata in RFC) dell’attributo è necessario risalire al suo identificativo univoco, con la seguente query: 5. select id from attribute join ATTRIBUTECOLLECTOR_ATTRIBUTE on ATTRIBUTECOLLECTOR_ATTRIBUTE.attribute_id= attribute.id where lower(attribute.chiave) like lower(‘%<descrizione>%’) and ATTRIBUTECOLLECTOR_ATTRIBUTE. ATTRIBUTECOLLECTOR_ID=<idAC> E’ necessario andare in JOIN con le Collezioni di Attributo per verificare la consistenza del legame attributo - collezione di attributi. Chiamiamo l’identificativo idAttr. Prima di inserire la risposta è necessario controllare che l’attributo non sia già in compilazione, si esegue la seguente query: 6. select id from afd.response where attribute_id=<idAttr> and COMPILATION_ID = <idComp> and ATTRIBUTECOLLECTOR_ID = <idAC>; Chiamiamo l’identificativo così recuperate idResp. Nel caso in cui l’attributo non risulti inserito è necessario inserirlo con la seguente query: 7. insert into response(ATTRIBUTE_ID, COMPILATION_ID, ATTRIBUTECOLLECTOR_ID) values (<idAttr>, <idComp>, <idAC>); è necessario a questo punto recuperare l’identificativo inserito come descritto al punto 6. 4.4 Controllo del numero delle risposte Prima di andare ad inserire la risposta è necessario controllare quante risposte prevede l’attributo: 8. Select massimonumerorisposte from afd.attribute where id =<idAttr> Se il valore trovato è uguale a 0, si può passare alla definizione della risposta [4.5]. Se il valore trovato NON è uguale a 0 è necessario controllare il numero delle risposte già inserite: 9. Select count(*) as tot from afd.RESPONSEVALUEABSTRACT where response_id = <idResp> 17 Progetto: Riferimento: ARPA Fonte Dati Documentazione Database L’accesso alla funzionalità espresso nel prossimo paragrafo [4.5] si ha solo se massimonumerorisposte > tot. 4.5 Definizione della risposta Ultimo passaggio, ma forse quello più impegnativo, è la definizione della risposta da inserire. Distinguiamo due casi, il caso in cui l’attributo è di tipo selezione ed il caso in cui non lo è. 10. Select tipo from afd.attribute where id =<idAttr> 4.5.1. Attributo Non di tipo Selezione [tipo =T|D|N] Per definire la risposta è necessario inserire la seguente operazione: 11. Insert into afd.RESPONSEVALUEABSTRACT (RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_TXT, RESPONSE_ID) values (‘response_value_textual’, <risposta>, <idResp>) 4.5.2. Attributo è di tipo Selezione [tipo=S] Per definire la risposta è necessario recuperare l’identificativo univoco del valore scelto. 12. Select id from afd.attributovalore where attribute_id=<idAttr> and lower(chiave) like lower(‘%<valore risposta>%’) Chiamiamo questo identificativo trovato idAV. Adesso vediamo la query per inserire la risposta: 13. Insert into afd.RESPONSEVALUEABSTRACT (RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_ID, RESPONSE_ID) values (‘response_value_selection’, <idAV>, <idResp>) Oppure si possono unificare le due query sopra con la seguente: 14. Insert into afd.RESPONSEVALUEABSTRACT (RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_ID, RESPONSE_ID) values (‘response_value_selection’, (Select id from afd.attributovalore where attribute_id=<idAttr> and lower(chiave) like lower(‘%<valore risposta>%’)), <idResp>) 18