|
Introduzione
Questo mese inizia una serie di tre articoli dedicata
alle API di JasperReports, una libreria Open Source
(rilasciata con licenza LGPL) scritta interamente in
Java che consente la generazione dinamica di report
a partire da dati recuperati da fonti di varia natura
(per esempio database) e la loro visualizzazione, stampa
o salvataggio su file di tipo PDF, HTML, XLS, CSV o
XML. JasperReports può essere utilizzata in tutti
i tipi di applicazioni Java, comprese quelle Web. In
questo primo articolo verranno fatte una panoramica
sull'architettura di JasperReports e una descrizione
a grandi linee del processo di generazione di un report.
La
reportistica
Spesso può capitare l'esigenza di dover integrare
delle funzionalità di reportistica all'interno
di una applicazione Java. In questi casi JasperReports
è un'alternativa sicuramente valida non solo
all'ipotesi di realizzare ex novo il motore per la creazione
di report professionali ma anche rispetto all'adozione
di software commerciali (quali Crystal Reports), molto
potenti e stabili, ma che comportano per il nostro progetto
dei costi aggiuntivi elevati, sia in termini economici
(a causa delle licenze) che di tempo (interfacciamento
non sempre agevole).
JasperReports prevede già delle API per la realizzazione
di tutte le funzionalità tipiche di un software
di reportistica:
- formattazione
di ogni elemento di un testo (font, allineamento,
spaziatura, colore, etc.)
- definizione
di parti standard predefinite (header, footer, sommario,
etc.)
- gestione
di raggruppamenti
- valutazione
di espressioni
- campi
calcolati
- gestione
di subreport
- inserimento
di immagini
- stampa
- salvataggio
dell'output su file di diverso formato
In
figura 1 viene mostrato un esempio di report generato
da applicazione Java tramite JasperReports.

Figura 1 - Esempio di report generato mediante
JasperReports
Architettura
di JasperReports
In figura 2 viene mostrato un diagramma dell'architettura
di JasperReports.

Figura 2 - Architettura di JasperReports
In
fase di design, deve essere per prima cosa definito
il layout (sotto forma di file XML, costruito secondo
lo schema definito in jasperreport.dtd) di un report.
A partire da tale layout, tramite JasperReports, andrà
prodotto un file con estensione .jasper. Quest'ultimo
è il semicompilato che verrà utilizzato
dall'applicazione a runtime per la generazione del report
vero e proprio, a partire da dati recuperati da un database.
La figura 3 chiarisce ulteriormente questo concetto.

Figura 3 - Processo di generazione di un report
La
versione più recente di JasperReports è
la 1.1.1 Richiede il JDK 1.2.2 o versione superiore.
Il runtime e la compilazione necessitano delle seguenti
liberie Java (tutte comunque incluse nell'archivio ZIP
scaricabile dal sito ufficiale (http://jasperreports.sourceforge.net/)):
- SAX
XML Parser
- Jakarta
Commons Digester Component
- Jakarta
Commons BeanUtil Component
- Jakarta
Commons Collections Component
- Jakarta
Commons Logging Component
- JDBC
2.0
- IText
- Jakarta
POI
I
package che compongono la libreria sono i seguenti:
- net.sf.jasperreports.ant
- net.sf.jasperreports.engine
- net.sf.jasperreports.engine.base
- net.sf.jasperreports.engine.data
- net.sf.jasperreports.engine.design
- net.sf.jasperreports.engine.export
- net.sf.jasperreports.engine.fill
- net.sf.jasperreports.engine.print
- net.sf.jasperreports.engine.util
- net.sf.jasperreports.engine.xml
- net.sf.jasperreports.view
- net.sf.jasperreports.view.save
Il
più importante fra questi è net.sf.jasperreports.engine,
il quale contiene le classi direttamente richiamate
dalle applicazioni che adottano JasperReports ed evidenziate
in rosso in figura 1.
Conclusioni
La comprensione dell'architettura di JasperReports descritta
in questo articolo è necessaria per potersi cimentare
nella integrazione di tale liberia in un'applicazione
Java. Nel prossimo articolo vedremo alcuni esempi pratici
semplici, ma molto utili da un punto di vista didattico
perché mettono in risalto le operazioni comuni
a tutte i processi di generazione di report tramite
JasperReports.
Bibliografia
[1] Teodor Danciu - "Documentazione ufficiale di
JasperReports", http://jasperreports.sourceforge.net/
[2] Wostmann & Associates - "JasperReports
and iReports", http://www.wainet.com/Presentations/JasperReports%20&%20iReports.ppt
Guglielmo
Iozzia Laureato nel 1999 in Ingegneria Elettronica
presso l'Università di Bologna. Ha realizzato,
per la tesi di laurea, un software diagnostico per la
predizione dell'andamento della pressione intracranica
in pazienti in terapia intensiva neurochirurgica. Dall'inizio
del 2000 si occupa, per conto di una azienda di Bologna
del settore IT, dell'analisi e dello sviluppo di applicazioni
Java 3-tier (Database, Application Server/Web Server,
Client) in diversi ambiti (gestionale, mailbanking,
industria meccanica, pubblica amministrazione). Dall'
autunno 2005 è anche responsabile delle architetture
di rete per la stessa azienda.
|