gwusermanual:interface:extractor_sql:estrattore_sql

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
gwusermanual:interface:extractor_sql:estrattore_sql [2023/12/04 17:10]
giorgio.scali creata
gwusermanual:interface:extractor_sql:estrattore_sql [2023/12/27 09:39] (versione attuale)
giorgio.scali [2) Importare le classi di base]
Linea 4: Linea 4:
  
 L'//​Estrattore SQL// è una particolare UI, impostata come //wizard//, che permette di configurare **modelli di estrazione** SQL. L'//​Estrattore SQL// è una particolare UI, impostata come //wizard//, che permette di configurare **modelli di estrazione** SQL.
 +
 +Un modello di estrazione si riferisce sempre ad un particolare **dataset** (che rappresenta la fonte dei dati) e ne determina le modalità con le quali i dati ne vengono estratti.
 +
 Una volta definito un modello di estrazione, è possibile utilizzarlo per lanciare l'​estrazione SQL vera e propria. Una volta definito un modello di estrazione, è possibile utilizzarlo per lanciare l'​estrazione SQL vera e propria.
 +
 Esistono anche delle API js che permettono, di integrare ulteriori funzionalità dell'​estrattore come azioni di dettaglio in lista. Esistono anche delle API js che permettono, di integrare ulteriori funzionalità dell'​estrattore come azioni di dettaglio in lista.
  
Linea 20: 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 38: 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) Lanciare SQL script ​==== +==== 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 57: 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.
  • gwusermanual/interface/extractor_sql/estrattore_sql.1701706257.txt.gz
  • Ultima modifica: 2023/12/04 17:10
  • da giorgio.scali