Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
gwusermanual:interface:extractor_sql:estrattore_sql [2023/12/04 17:14] giorgio.scali [2) Lanciare SQL script] |
gwusermanual:interface:extractor_sql:estrattore_sql [2023/12/27 09:39] (versione attuale) giorgio.scali [2) Importare le classi di base] |
||
---|---|---|---|
Linea 24: | Linea 24: | ||
Creare le tabelle necessarie eseguendo gli script di base sulla **schema dei dati**. | Creare le tabelle necessarie eseguendo gli script di base sulla **schema dei dati**. | ||
<code sql> | <code sql> | ||
+ | -- Table: data_schema.gw_dataset | ||
+ | |||
-- DROP TABLE data_schema.gw_dataset; | -- DROP TABLE data_schema.gw_dataset; | ||
Linea 42: | Linea 44: | ||
ALTER TABLE data_schema.gw_dataset | ALTER TABLE data_schema.gw_dataset | ||
+ | OWNER to data_schema; | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | -- Table: data_schema.gw_extraction_model | ||
+ | |||
+ | -- DROP TABLE data_schema.gw_extraction_model; | ||
+ | |||
+ | CREATE TABLE IF NOT EXISTS data_schema.gw_extraction_model | ||
+ | ( | ||
+ | pk_extraction_model integer NOT NULL, | ||
+ | name_extraction_model character varying(100) COLLATE pg_catalog."default" NOT NULL, | ||
+ | date_creation timestamp without time zone, | ||
+ | date_last_modify timestamp without time zone, | ||
+ | cod_dataset character varying(100) COLLATE pg_catalog."default" NOT NULL, | ||
+ | cod_extraction_model character varying(50) COLLATE pg_catalog."default" NOT NULL, | ||
+ | user_creation character varying(255) COLLATE pg_catalog."default", | ||
+ | user_last_modify character varying(255) COLLATE pg_catalog."default", | ||
+ | filters_ext character varying COLLATE pg_catalog."default", | ||
+ | gw_state_json character varying COLLATE pg_catalog."default", | ||
+ | CONSTRAINT gw_extraction_model_pkey PRIMARY KEY (pk_extraction_model), | ||
+ | CONSTRAINT cod_extraction_model_uk UNIQUE (cod_extraction_model), | ||
+ | CONSTRAINT cod_dataset_fk FOREIGN KEY (cod_dataset) | ||
+ | REFERENCES data_schema.gw_dataset (cod_dataset) MATCH SIMPLE | ||
+ | ON UPDATE NO ACTION | ||
+ | ON DELETE NO ACTION | ||
+ | ) | ||
+ | WITH ( | ||
+ | OIDS = FALSE | ||
+ | ) | ||
+ | TABLESPACE pg_default; | ||
+ | |||
+ | ALTER TABLE data_schema.gw_extraction_model | ||
OWNER to data_schema; | OWNER to data_schema; | ||
</code> | </code> | ||
==== 2) Importare le classi di base ==== | ==== 2) Importare le classi di base ==== | ||
- | Scaricare, estrarre dall'archivio ed importare le {{gwusermanual:ext_sql_classes_gw_dataset_gw_extraction_model.7z|classi di base}} **gw_dataset** e **gw_extraction_model**. Assegnare i permessi necessari alle classi e relative azioni. | + | Scaricare, estrarre dall'archivio ed importare le {{gwusermanual:classes_gw_dataset___gw_extraction_model.7z|classi di base}} **gw_dataset** e **gw_extraction_model**. Assegnare i permessi necessari alle classi e relative azioni. |
==== 3) Creazione Dataset ==== | ==== 3) Creazione Dataset ==== | ||
Creare una tabella/view/vista materializzata 'piatta' con tutti i campi //in chiaro// (non codificati, senza bisogno di join con tabelle esterne) cosi come vanno esportati. | Creare una tabella/view/vista materializzata 'piatta' con tutti i campi //in chiaro// (non codificati, senza bisogno di join con tabelle esterne) cosi come vanno esportati. | ||
Creare la relativa classe in geoweb. la quale: | Creare la relativa classe in geoweb. la quale: | ||
+ | * necessita degli attributi, con attenzione in particolare alla correttezza del data type | ||
* non ha bisogno di aggiungere widget in lista: se non per poter esplicitarne la **width** da utilizzare nel caso l'utente li scelta per l'estrazione (Utile quando ci sono tantissimi campi scelti, per evitare che la grid assegni la width di default, a campi come le Note, per esempio, che farebbero incrementare l'altezza della riga | * non ha bisogno di aggiungere widget in lista: se non per poter esplicitarne la **width** da utilizzare nel caso l'utente li scelta per l'estrazione (Utile quando ci sono tantissimi campi scelti, per evitare che la grid assegni la width di default, a campi come le Note, per esempio, che farebbero incrementare l'altezza della riga | ||
* non ha bisogno di aggiungere widget nella sezione filtro: anche se si possono aggiungere determinati attributi e configurarli per poterne determinare la modalità di scelta del valore (supportati: **scelta da lista**, **scelta da finestra**, **scelta statica**. Ovviamente è esculsa la decodifica, e i vari valori in visualizzazione label, fieldToShow etc saranno i medesimi di quelli nel tracciato del db) | * non ha bisogno di aggiungere widget nella sezione filtro: anche se si possono aggiungere determinati attributi e configurarli per poterne determinare la modalità di scelta del valore (supportati: **scelta da lista**, **scelta da finestra**, **scelta statica**. Ovviamente è esculsa la decodifica, e i vari valori in visualizzazione label, fieldToShow etc saranno i medesimi di quelli nel tracciato del db) | ||
* non ha bisogno di configurare l'xml dei widget, anche se si può configurare un formato specifico per i widget date/time, che verrà utilizzato per l'export | * non ha bisogno di configurare l'xml dei widget, anche se si può configurare un formato specifico per i widget date/time, che verrà utilizzato per l'export | ||
- | * gli attributi **vanno obbligatoriamente associati** a dei gruppi attributi, con la convenzione nel nome 'ext_'+[n_order]+'_'+[label gruppo campi], dove //'ext_'// è fisso, //n_order// è un intero che determina l'ordine fra i gruppi, e //label gruppo campi// è il nome del gruppo effettivamente visualizzato. | + | * gli attributi **vanno obbligatoriamente associati** a dei gruppi attributi, con la convenzione nel nome <code>'ext_'+[n_order]+'_'+[label gruppo campi]</code>, dove **'ext_'** è fisso, **n_order** è un intero che determina l'ordine fra i gruppi, e **label gruppo campi** è il nome del gruppo effettivamente visualizzato. |
Esempio di classe {{gwusermanual:ext_sql_pma_tri_tax_datamart.zip|pma_tri_tax_datamart}}. | Esempio di classe {{gwusermanual:ext_sql_pma_tri_tax_datamart.zip|pma_tri_tax_datamart}}. | ||
Linea 61: | Linea 100: | ||
Nell'xml di progetto, aggiungere i menu di terzo livello: | Nell'xml di progetto, aggiungere i menu di terzo livello: | ||
<code xml> | <code xml> | ||
- | <leafItem name="gw_extraction_model" label="Modelli estrazione dati" image="fa-solid fa-file-export" type="leafItemListFilters"> | + | <leafItem name="gw_extraction_model" label="Modelli estrazione dati" image="fa-solid fa-file-export" type="leafItemListFilters"> |
- | <parameter name="attributeToFilter" value="cod_dataset" hideToClient="false"/> | + | <parameter name="attributeToFilter" value="cod_dataset" hideToClient="false"/> |
- | <parameter name="className" value="gw_extraction_model" hideToClient="false"/> | + | <parameter name="className" value="gw_extraction_model" hideToClient="false"/> |
- | </leafItem> | + | </leafItem> |
</code> | </code> | ||
ed opzionalmente: | ed opzionalmente: | ||
<code xml> | <code xml> | ||
- | <leafItem name="gw_dataset" label="Dataset" image="fa-solid fa-database" type="gwClassList"> | + | <leafItem name="gw_dataset" label="Dataset" image="fa-solid fa-database" type="gwClassList"> |
- | <parameter name="className" value="gw_dataset" hideToClient="false"/> | + | <parameter name="className" value="gw_dataset" hideToClient="false"/> |
- | </leafItem> | + | </leafItem> |
</code> | </code> | ||
===== WIZARD ===== | ===== WIZARD ===== | ||
- | Al click sul leafItem //Modelli estrazione dati//, si apre la lista dei modelli già configurati. | + | Pagina dedicata [[gwUserManual:interface:extractor_sql_wizard:Estrattore SQL WIZARD]]. |
- | {{ :gwusermanual:ext_sql_1.jpg}} | + | |
- | Il wizard, in generale, può essere lanciato tramite l'apposita API js. Nello specifico si lancia dall'azione in toolbar //Nuovo modello di estrazione// (marker <color #ed1c24>1</color>) | + | |
- | {{ :gwusermanual:ext_sql_2.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 1/4 - NUOVO o MODIFICA ==== | + | |
- | Nel primo step del wizard la prima cosa da fare è selezionare il dataset sul quale configurare il modello di estrazione. | + | |
- | Inoltre si può scegliere se creare un nuovo modello da zero, oppure modificare parzialmente un modello già esistente, per poi scegliere alla fine se sovrascriverlo e crearne un altro con differente nome. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_3.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 2/4 - NUOVO - scelta campi ==== | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_4.jpg}} | + | |
- | + | ||
- | Caso NUOVO. | + | |
- | + | ||
- | Nel secondo step si deve: | + | |
- | * scegliere i campi da esportare | + | |
- | * scegliere l'ordine delle colonne esportate | + | |
- | * si può opzionalmente impostare un **alias** | + | |
- | + | ||
- | I campi sono divisi in gruppi, come da convenzione di configurazione. C'è un filtro globale che opera sui vari gruppi e lavora indistintamente sia con il nome che con la label degli attributi (spazi ammessi per separare più criteri messi in AND logico). | + | |
- | + | ||
- | I campi possono essere spostati singolarmente (tramite button e drag&drop), per gruppo (tramite button e drag&drop) e globalmente (tramite button in toolbar grid). Per il drag&drop è supportata la selezione multipla (sia con CTRL, che con SHIFT). | + | |
- | + | ||
- | Le proprietà movimentate tramite i comandi verranno sempre aggiunte in coda alla lista. | + | |
- | + | ||
- | Utilizzando i comandi di spostamento massivi verrà sempre rimosso l'eventuale filtro impostato. | + | |
- | + | ||
- | Una volta associato un campo a quelli da esportare, se ne può variare l'ordine di esportazione, tramite drag&drop. | + | |
- | + | ||
- | Una volta associato un campo a quelli da esportare, si può impostare un alias alternativo alla label suggerita (quella della gwClass), che verrà utilizzata nelle fasi successive. | + | |
- | + | ||
- | Al click sui button 'chiudi' verrà visualizzato un button di conferma. | + | |
- | + | ||
- | Al click sul button 'indietro' e sul button 'avanti' e successivo ritorno allo step corrente, verrà ripristinato lo stato impostato. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_5.jpg}} | + | |
- | + | ||
- | === Legenda funzionalità === | + | |
- | + | ||
- | - titolo | + | |
- | - descrizione sintetica step + tooltip descrizione estesa | + | |
- | - filtro campo inter-gruppo | + | |
- | - accordion gruppo campi (espandibile/collassabile) | + | |
- | - button 'Aggiungi tutti (gruppo)' | + | |
- | - singolo campo | + | |
- | - nome campo | + | |
- | - label campo | + | |
- | - button 'Aggiungi' | + | |
- | - button in toolbar grid 'Aggiungi tutti' | + | |
- | - button in toolbar grid 'Rimuovi selezionati' | + | |
- | - button su singolo campo aggiunto 'Rimuovi singolo' | + | |
- | - colonna indicatore ordine campo | + | |
- | - colonna per impostare alias alternativi alle label dei campi | + | |
- | - button indietro | + | |
- | - button avanti | + | |
- | - button chiudi | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_6.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 3/4 - NUOVO - scelta criteri di filtro ==== | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_7.jpg}} | + | |
- | + | ||
- | Impostare i criteri per il modello di estrazione (filtri) agendo sul filtro incrementale, configurando per ogni filtro: proprietà, operatore ed eventualmente uno o più valori. | + | |
- | Ogni filtro aggiunto può essere successivamente modificato o rimosso. | + | |
- | I filtri verranno applicati automaticamente. | + | |
- | Eventuali filtri non corretti, o non completi, verranno notificati all'utente e non saranno applicati alla preview. | + | |
- | + | ||
- | Sulla toolbar della preview si può già lanciare l'estrazione dei dati, che da questo step verrà sempre eseguita **con le configurazioni di campi e filtri correnti**. | + | |
- | + | ||
- | Al click sui button 'chiudi' verrà visualizzato un button di conferma. | + | |
- | + | ||
- | Al click sul button 'indietro' e sul button 'avanti' e successivo ritorno allo step corrente, verrà ripristinato lo stato impostato. | + | |
- | + | ||
- | === sezione stato ==== | + | |
- | La sezione 'stato' informa sull'effettiva applicazione dei filtri correnti (e validi) alla preview. | + | |
- | La sezione 'stato' inoltre notifica la presenza di filtri non validi e quando il set di filtri impostato è (temporaneamente) differente da quello già applicato alla preview. Elenco stati: | + | |
- | * **applicato** quando i criteri di filtro validi sono correntemente applicati alla griglia di preview | + | |
- | * **in applicazione** quando i criteri di filtro validi sono in corso di applicazione alla griglia di preview | + | |
- | * **non applicabile** nella modalità avanzato, il filtro non risulta applicabile per problemi alla struttura dei filtri | + | |
- | * **parzialmente non valido** alcuni dei filtri non validano o non sono completi (può mancare ed non essere valido il campo, ll valore, etc..). Si procede comunque all'applicazione dei filtri validi | + | |
- | * **modificato** quando il filtro corrente è differente da quello applicato alla grid di preview | + | |
- | + | ||
- | === switch distinct ==== | + | |
- | Agendo sullo switch 'distinct', si abilità l'utilizzo dell'analogo comando SQL nell'esecuzione della query. In pratica per i criteri scelti non si ammettono nel risultato dell'esportazione record duplicati. Da notare che si possono quindi ottenere un numero minore di record di aquelli che si avrebbero avuti aggiungendo più campi nell'estrazione, i quali avrebbero denotato le differenze fra i record. | + | |
- | + | ||
- | === switch avanzato === | + | |
- | Agendo sullo switch 'avanzato', si abilitano maggiori possibilità di configurazione, potendo agire anche sulla 'condizione' e sulle parentesi (di apertura '(' e di chiusura ')'), utili per poter innestare a piacimento i filtri, determinandone l'ordine di valutazione. | + | |
- | Nella modalità 'avanzato' si abilita una sezione 'struttura' che notifica la coerenza delle parentesi impostate tramite il colore verde. | + | |
- | Disabilitando la modalità 'avanzato', verranno rimosse dai filtri tutte le eventuali condizioni 'OR' e le parantesi impostate. | + | |
- | + | ||
- | === expand/collapse floatingPane === | + | |
- | Da notare che lo step, come il due, viene aperto in un floating Pane a tutto schermo, che può essere collassato tramite l'apposito comando in altro a destra vicino al 'chiudi' X. | + | |
- | + | ||
- | === Legenda funzionalità === | + | |
- | + | ||
- | - titolo | + | |
- | - descrizione sintetica step + tooltip descrizione estesa | + | |
- | - button expand/collapse floatingPane | + | |
- | - button chiudi floatingPane | + | |
- | - colonna campo criterio di filtro | + | |
- | - colonna operatore criterio di filtro | + | |
- | - colonna valore(i) criterio di filtro | + | |
- | - switch distinct | + | |
- | - switch avanzato | + | |
- | - area stato | + | |
- | - griglia preview | + | |
- | - button in toolbar grid 'Estrazione diretta' | + | |
- | - button in toolbar grid 'rimuovi criteri di filtro' | + | |
- | - button 'indietro' | + | |
- | - button 'avanti' | + | |
- | - button 'chiudi' | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_8.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 4/4 - NUOVO - assegnazione nome ==== | + | |
- | + | ||
- | Questo step prevede l'assegnazione di un nome al nuovo modello di estrazione. | + | |
- | + | ||
- | Al click sui button 'chiudi' verrà visualizzato un button di conferma. | + | |
- | + | ||
- | Al click sul button 'indietro' e successivo ritorno allo step corrente, verrà ripristinato lo stato impostato. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_9.jpg}} | + | |
- | + | ||
- | + | ||
- | + | ||
- | ==== WIZARD 1/4 - MODIFICA ==== | + | |
- | + | ||
- | Utilizzare il //radiobutton// per abilitare il //select// di scelta di un modello estrazione esistente. Alla scelta si abilita il button 'avanti' | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_10.jpg}} | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ==== WIZARD 2/4 - MODIFICA - scelta campi ==== | + | |
- | + | ||
- | Caso MODIFICA . Si apre una UI del tutto simile a quella del caso NUOVO, ma già con degli attributi selezionati, con relativo ordine ed eventuali alias. | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 3/4 - MODIFICA - scelta criteri di filtro ==== | + | |
- | + | ||
- | Caso MODIFICA. Si apre una UI del tutto simile a quella del caso NUOVO, ma già con dei filtri impostati. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_12.jpg}} | + | |
- | + | ||
- | Nel caso il modello di estrazione utilizzi un filtro avanzato, la UI si presenterebbe con la relativa modalità attivata. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_14.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD 4/4 - MODIFICA - salva o crea nuovo ==== | + | |
- | + | ||
- | Caso MODIFICA. In questo step si può decidere se salvare i cambiamenti sul modello di estrazione di partenza o crearne uno totalmente nuovo, con relativo nome. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_15.jpg}} | + | |
- | + | ||
- | + | ||
- | ==== WIZARD - scorciatoie ==== | + | |
- | + | ||
- | Nella lista dei modelli di estrazione sono rpesenti scorciatoie al wizard standard | + | |
- | {{ :gwusermanual:ext_sql_2.jpg}} | + | |
- | + | ||
- | === Estrazione diretta === | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_2.jpg}} | + | |
- | + | ||
- | Al click sulla gwAction in lista icona 'excel' (marker <color #ed1c24>2</color>), viene lanciata l'estrazione del file .xlsx, cosi come da modello di estrazione. | + | |
- | + | ||
- | === Preview Estrazione === | + | |
- | + | ||
- | Al click sulla gwAction in lista icona 'search' (marker <color #ed1c24>3</color>), viene aperto il wizard nello step 3. senza possibilità di andare avanti/indietro nel wizard. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_17.jpg}} | + | |
- | + | ||
- | === Modifica Estrazione === | + | |
- | + | ||
- | Al click sulla gwAction in lista icona 'edit' (marker <color #ed1c24>4</color>), viene aperto il wizard nello step 1 con select dataset e modelli di estrazione bloccati, con la sola possibilità di andare avanti nel wizard, che poi proseguirà come una normale modifica. | + | |
- | + | ||
- | {{ :gwusermanual:ext_sql_18.jpg}} | + | |
- | ==== API JS ==== | + | ===== API JS ===== |
Lista signature api js. | Lista signature api js. |