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:exportable_report_setup [2024/06/17 02:56] giorgio.scali [Creazione Report Custom] |
gwusermanual:interface:exportable_report_setup [2024/07/18 16:29] (versione attuale) giorgio.scali [configuration.properties] |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
===== Report Esportabili - Messa in esercizio ===== | ===== Report Esportabili - Messa in esercizio ===== | ||
+ | |||
+ | Questa pagina si riferisce alle operazioni preliminari volte alla prima messa in opera delle [[gwusermanual:interface:exportable_report|Report Esportabili]]. | ||
+ | |||
+ | ==== Modello Dati ==== | ||
+ | Overview entità coinvolte: | ||
+ | * Report Esportabili (//gwr_report//) | ||
+ | * Modelli Report (//gwr_model//) | ||
+ | * Parametri Report (//gwr_param//) | ||
+ | * Categorie Report (//gwr_report_category//) | ||
+ | * Funzioni (//gwa_func//, presa dal modello dati delle pagine di accesso) | ||
+ | * Classi Filtrabili (//gwr_filterable_classes//) | ||
+ | |||
+ | |||
+ | {{ :er-diagram.png?direct |}} | ||
+ | |||
+ | ==== Abilitazione nel configuration.properties ==== | ||
+ | |||
+ | Le Report Esportabili, essendo rilasciate dalla versione 4.7.1 e necessitando di svariate nuove tabelle (che vanno preventivamente deployate tramite script) rispetto alla 4.7.0, vanno esplicitamente abilitate tramite il flag **report.exportableReports.enabled** nel configuration.properties (default false) | ||
+ | |||
+ | <code> | ||
+ | ... | ||
+ | report.exportableReports.enabled=true | ||
+ | ... | ||
+ | </code> | ||
==== Installare gli script ==== | ==== Installare gli script ==== | ||
- | Questo passaggio è necessario solo per eventuali porting alla 4.7.1 da una versione precedente: | + | Questo passaggio è necessario solo per eventuali porting alla 4.7.1 da versioni precedenti: |
- | **La presenza della tabella gwa_func è un prerequisito**. | + | **La presenza della tabella gwa_func è un prerequisito**. Dovrebbe già essere presente in quanto facente parte del modello dati delle pagine di accesso. In caso contrario usare lo script dedicato. |
Linea 308: | Linea 332: | ||
------------------------------------------------------------- | ------------------------------------------------------------- | ||
</file> | </file> | ||
+ | |||
+ | <file sql postgres_gwa_func.sql > | ||
+ | -- Table: test_gw47data.gwa_func | ||
+ | |||
+ | -- DROP TABLE test_gw47data.gwa_func; | ||
+ | |||
+ | CREATE TABLE IF NOT EXISTS test_gw47data.gwa_func | ||
+ | ( | ||
+ | id_func integer NOT NULL, | ||
+ | cod_func character varying(50) COLLATE pg_catalog."default" NOT NULL, | ||
+ | name_func character varying(150) COLLATE pg_catalog."default", | ||
+ | description_func character varying(255) COLLATE pg_catalog."default", | ||
+ | icon_name character varying(100) COLLATE pg_catalog."default", | ||
+ | type_func integer, | ||
+ | enabled_func integer, | ||
+ | cod_module character varying(50) COLLATE pg_catalog."default", | ||
+ | cod_obj_type character varying(50) COLLATE pg_catalog."default", | ||
+ | usergroup character varying(250) COLLATE pg_catalog."default", | ||
+ | project_name character varying(50) COLLATE pg_catalog."default", | ||
+ | session_code_field character varying(250) COLLATE pg_catalog."default", | ||
+ | session_code_field_name character varying(250) COLLATE pg_catalog."default", | ||
+ | open_new_tab integer NOT NULL DEFAULT 0, | ||
+ | license_use integer NOT NULL DEFAULT 0, | ||
+ | CONSTRAINT gwa_func_pkey PRIMARY KEY (id_func), | ||
+ | CONSTRAINT gwa_func_un UNIQUE (cod_func) | ||
+ | ) | ||
+ | WITH ( | ||
+ | OIDS = FALSE | ||
+ | ) | ||
+ | TABLESPACE pg_default; | ||
+ | |||
+ | ALTER TABLE test_gw47data.gwa_func | ||
+ | OWNER to test_gw46data; | ||
+ | |||
+ | COMMENT ON TABLE test_gw47data.gwa_func | ||
+ | IS 'tabella anagrafica delle funzioni per le pagine di accesso'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.id_func | ||
+ | IS 'chiave primaria'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.cod_func | ||
+ | IS 'codice univoco della funzione'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.name_func | ||
+ | IS 'nome della funzione'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.description_func | ||
+ | IS 'descrizione estesa della funzione'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.icon_name | ||
+ | IS 'nome della classe css di fontawesome rappresentativa dell''icona'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.type_func | ||
+ | IS 'tipologia di funzione'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.enabled_func | ||
+ | IS 'check di funzione abilitata'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.cod_module | ||
+ | IS 'codice del modulo di riferimento'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.cod_obj_type | ||
+ | IS 'codice del tipo di oggetto'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.usergroup | ||
+ | IS 'nome del gruppo di riferimento'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.project_name | ||
+ | IS 'nome del progetto geoweb'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.session_code_field | ||
+ | IS 'nome del parametro in sessione che contiene il campo “fieldToStore” dell’elemento da visualizzare per il progetto corrente'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.session_code_field_name | ||
+ | IS 'nome del parametro in sessione che contiene il campo “fieldToShow” dell’elemento da visualizzare'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.open_new_tab | ||
+ | IS 'flag, default 0. Se 0 non apre il progetto in un nuovo tab.Se 1 apre il progetto geoweb in un nuovo tab'; | ||
+ | |||
+ | COMMENT ON COLUMN test_gw47data.gwa_func.license_use | ||
+ | IS 'flag, default 0. Se 0 le utenze associate alla funzione non consumano licenza. Se 1 la consumano'; | ||
+ | </file> | ||
+ | |||
+ | |||
+ | ==== Importare groovy ==== | ||
+ | Tutti i groovy (prefisso **gwr_**) sono nuovi e possono essere importati senza conseguenze. | ||
+ | Un unica eccezione riguarda **gwa_func.groovy**, che potrebbe già essere presente e nel caso va modificato aggiungendo i controlli forniti. | ||
+ | |||
+ | {{ :gwr_groovy.zip|gwr_groovy.zip}} | ||
+ | |||
==== Importare metadati geoweb ==== | ==== Importare metadati geoweb ==== | ||
- | E' messa a disposizione la configurazione dei metadati del [[exp_rep_proj.zip|progetto di test]] dedicato alle Report Esportabili. | + | E' messa a disposizione la configurazione dei metadati del {{ : exp_rep_proj.zip|exp_rep_proj.zip}} dedicato alle Report Esportabili. |
- | **La presenza della classe gwa_func è un prerequisito**. | + | **La presenza della classe gwa_func è un prerequisito**.seguire le seguenti linee guida: |
+ | * nel caso mancasse lo script va ripreso dal modello dati delle pagine di accesso. | ||
+ | * nel caso la classe fosse assente, questa è una base da cui partire {{ :gwa_func.zip|gwa_func.zip}} | ||
+ | * nel caso la classe ci sia già, va comunque specificato il trigger applicativo **gwa_func.groovy**. | ||
+ | * nel caso si fosse già un trigger applicativo configurato, esso va integrato con il contenuto presente nel gwa_func.groovy fornito. | ||
L'utente configuratore deve inizialmente importare questo progetto nell'ambiente di sviluppo del prodotto. | L'utente configuratore deve inizialmente importare questo progetto nell'ambiente di sviluppo del prodotto. | ||
- | I permessi di azioni e progetti sono impostati al gruppo 'SOLUTION_MANAGER': fare gli eventuali aggiustamenti. | + | I permessi di azioni e progetti sono impostati al gruppo 'SOLUTION_MANAGER'. Fare gli eventuali aggiustamenti del caso. |
Linea 322: | Linea 440: | ||
Successivamente dovrà prendere i vari blocchi dell'xml di progetto ed applicarli puntualmente agli xml delle Funzioni già in essere. | Successivamente dovrà prendere i vari blocchi dell'xml di progetto ed applicarli puntualmente agli xml delle Funzioni già in essere. | ||
Quindi tipicamente: | Quindi tipicamente: | ||
- | * le Funzioni appropriate dovranno essere integrate, nel loro menu di navigazione, dalla nuova scheda [[gwusermanual:interface:exportable_report#gwexportablereporttab|gwExportableReport]]. [primo menubarItem dei metadati di progetto] | + | |
- | * all'utente Solution Manager, dovrà essere abilitata una nuova funzione dì gestione delle reportistiche [secondo menubarItem dei metadati di progetto] | + | === Integrare tab gwExportableReport === |
- | * di questo vanno integrate il leafItem di apertura [[gwusermanual:interface:exportable_report#gwexportablereportsmtab|gwExportableReportSM]], e le anagrafiche di gestione: | + | Le Funzioni appropriate dovranno essere integrate, nel loro menu di navigazione, dalla nuova scheda [[gwusermanual:interface:exportable_report#gwexportablereporttab|gwExportableReport]]. [primo menubarItem dei metadati di progetto] |
- | * Report | + | |
- | * Modelli Report (opzionalmente, in quanto gestibili anche da dettaglio Report) | + | === Integrare tab gwExportableReportSM + anagrafiche base === |
- | * Parametri Report (opzionalmente, in quanto gestibili anche da dettaglio Report) | + | All'utente Solution Manager, dovrà essere abilitata una nuova funzione dì gestione delle reportistiche [secondo menubarItem dei metadati di progetto] |
- | * Categorie Report (opzionalmente, in quanto gestibili solo dalla scheda gwExportableReportSM) | + | * di questo vanno integrate il leafItem di apertura [[gwusermanual:interface:exportable_report#gwexportablereportsmtab|gwExportableReportSM]], e le anagrafiche di gestione: |
- | * gli accordion delle 'Anagrafiche di Supporto' e delle 'Funzioni utente' possono essere ignorati | + | * Report |
- | * accordati tutti i permessi alle varie classi | + | * Modelli Report (opzionalmente, in quanto gestibili anche da dettaglio Report) |
+ | * Parametri Report (opzionalmente, in quanto gestibili anche da dettaglio Report) | ||
+ | * Categorie Report (opzionalmente, in quanto gestibili solo dalla scheda gwExportableReportSM) | ||
+ | * gli accordion delle 'Anagrafiche di Supporto' e delle 'Funzioni utente' possono essere ignorati | ||
+ | |||
+ | === Rivedere i permessi === | ||
+ | Eventualmente rivedere tutti i permessi alle varie classi, considerando che escono con gruppo = 'SOLUTION_MANAGER'. | ||
+ | |||
+ | === Popolare coerentemente gwr_filterable_classes === | ||
+ | |||
+ | La tabella **gwr_filterable_classes**, di cui è rilasciata anche la classe di gestione, **serve a censire esplicitamente tutte le tabelle/classi che possono essere oggetto di essere usate in una qualche Report Esportabile**. | ||
+ | |||
+ | Questo passaggio è necessario in quanto al SM è data la possibilità di abilitare la possibilità di filtrare i dati delle Report usando i filtri delle liste e dei dettagli di classe. | ||
+ | E' onere del SM quindi, specificare per quali classi la Report è compatibile ai fini dell'esportazione parzializzata, e quindi se ne possono usare i filtri che Geoweb crea in automatico per parzializzare i dati della Report. | ||
+ | |||
+ | E' quindi onere dell'utente configuratore scremare in origine le classi sulle quali si può generare una Report. | ||
+ | |||
+ | In alcuni casi è prassi configurare classi Geoweb differenti, copiandole le une dalle altre, con sottostante la stessa tabella, per svariate esigenze. | ||
+ | |||
+ | In questo caso la problematica non si pone, avendo l'accortezza di usare come //Label della classe//, la stessa nomenclatura configurata e visibile nelle varie Funzioni per gli utenti finali (compreso il SM), in maniera tale che il SM possa intuitivamente selezionare le classi compatibili. | ||
+ | |||
+ | |||
==== Tool Necessari ==== | ==== Tool Necessari ==== | ||
Linea 340: | Linea 480: | ||
A tale scopo si rimanda alle convenzioni sugli stili ed alla guida di configurazione delle Report precedente in quanto continuano a valere tutti i [[gwusermanual:interface:report#meccanismi_di_integrazione_con_geoweb|meccanismi di integrazione con Geoweb]]. | A tale scopo si rimanda alle convenzioni sugli stili ed alla guida di configurazione delle Report precedente in quanto continuano a valere tutti i [[gwusermanual:interface:report#meccanismi_di_integrazione_con_geoweb|meccanismi di integrazione con Geoweb]]. | ||
+ | |||
+ | L'unica cosa rilevante che viene aggiunta nel nuovo meccanismo di reportistica è un nuovo parametro che viene dinamicamente passato alla report **GW_BUILT_CLAUSE**. | ||
+ | Questo parametro, **va utilizzato nella clausola WHERE della query della report (o della sottoreport)**, cosi: | ||
+ | |||
+ | <code sql> | ||
+ | SELECT * | ||
+ | FROM gwr_report | ||
+ | WHERE $P!{GW_BUILT_CLAUSE} | ||
+ | ORDER BY gwr_report.cod_report ASC | ||
+ | </code> | ||
+ | |||
+ | Normalmente GW_BUILT_CLAUSE vale **1=1** (quindi una condizione neutra). | ||
+ | |||
+ | Invece nei casi dove la Report è configurata per essere esportabile anche da Lista/Dettaglio di talune anagrafiche, questo parametro viene passato alla Report come una composizione della **PRIMARY_KEY** della classe con il filtro esatto cosi come composto dalla lista(o dettaglio) di Geoweb. | ||
+ | Esempio GW_BUILT_CLAUSE lista sulla classe gwr_report stessa: | ||
+ | |||
+ | <code sql> | ||
+ | SELECT * | ||
+ | FROM gwr_report | ||
+ | WHERE (id_report IN (SELECT a0.id_report | ||
+ | FROM gwr_report a0 | ||
+ | WHERE ((((a0.id_report IN (15465637,15465638,15465639,15465643,15465645)))) | ||
+ | AND ((('SOLUTION_MANAGER' = 'SOLUTION_MANAGER')))))) | ||
+ | ORDER BY gwr_report.cod_report ASC | ||
+ | </code> | ||
+ | |||
+ | {{ :jasper_report_1.png?direct |}} | ||
+ | |||
+ | Nel template scaricabile dalla UI di dettaglio della Report, vengono passati i seguenti parametri: | ||
+ | * SUBREPORT_URL | ||
+ | * SUBREPORT_CONN | ||
+ | * GW_BUILT_CLAUSE | ||
+ | * COD_REPORT | ||
+ | |||
+ | Dettaglio di come si impostano i parametri da passare alla sottoreport su Jasper Studio, qualora fosse necessario. | ||
+ | |||
+ | {{ :jasper_report_2.png?direct |}} | ||
+ | |||
==== Creazione Report Custom ==== | ==== Creazione Report Custom ==== | ||
La creazione di Report Custom è in capo al Solution Manager, che sebbene teoricamente possa agire in autonomia, più realisticamente, si avvarrà della collaborazione di personale con competenze tecniche specifiche negli ambiti: | La creazione di Report Custom è in capo al Solution Manager, che sebbene teoricamente possa agire in autonomia, più realisticamente, si avvarrà della collaborazione di personale con competenze tecniche specifiche negli ambiti: | ||
* SQL | * SQL | ||
+ | * modello dati delle entità oggetto delle Report | ||
* Jasper Report | * Jasper Report | ||
- | * Geoweb | + | * Geoweb (marginalmente) |
- | Questo ruolo potrebbe essere svolto proprio da Geoweb Italia su richiesta del cliente | + | |
+ | Questo ruolo potrebbe essere svolto su richiesta del cliente proprio da Geoweb Italia (almeno inizialmente). | ||
+ | |||
+ | Per i clienti che volessero agire in completa autonomia, vanno predisposti e resi fruibili anche degli **script per crearsi un database di test semplificato**, al fine di avere un ambiente di sviluppo separato ma simile da quello di esercizio, e che in ogni caso rispecchi il modello dati delle anagrafiche su cui è previsto poter creare delle report. |