MokaByte 104 - Febbraio 2006
 
MokaByte 104 - Febbraio 2006 Prima pagina Cerca Home Page

 

 

 

JasperReports
Una liberia Open Source per la reportistica - I prima parte

Primo di tre articoli sulla descrizione delle API di JasperReports, una libreria Java Open Source che consente la generazione dinamica di report a partire da una fonte dati e la successiva renderizzazione in svariati formati, tra i quali PDF e HTML

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.