2. Jasper ReportsJasper Reports --EinleitungEinleitung
2
• Sehr umfangreiche Open Source Java Reporting Engine
• Entwicklung durch Teodor Danciu im Juni 2001 gestartet
• Erste Version (0.1.5) am 3. November 2001 veröffentlicht, die Version 1.0 am
21. Juli 2005.
• Heute verfügbar durch JasperForge und kommerziell durch Jaspersoft.
• JasperSoft entstand 2004 aus der Firma Panscopic. 2004 erwarb Panscopic alle Rechte an
JasperReports und nannte sich in JasperSoft um.
• Lizenz: LGPLv3. Kommerzielle Lizenzen incl. Support über Jasper Soft verfügbar
• Aktuelle Version: 3.7.4
3. Jasper ReportsJasper Reports –– Features & HighlightsFeatures & Highlights
3
• API in Java realisiert
• vollständig in eigene Applikationen integrierbar
• pixelgenaue Erstellung von Reports
• Unterstützung zahlreicher Ausgaben
• Bildschirm
• Drucker
• Datei - Ausgabeformate: PDF, HTML, XLS, CSV, RTF, Word, TXT, XML,PPT etc.
• Unterstützung nahezu beliebiger Datenquellen
• Mehrsprachigkeit, Barcodes, Charts, Templates, Conditional Layouts, etc.
• Community JasperForge: > 160 TSD Mitglieder, > 11Mio. downloads
4. Jasper ReportsJasper Reports ––RequirementsRequirements
4
• Jasper Reports API – jasperreports-3.7.4.jar
• Download verfügbar über JasperForge
http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%203.7.4/j
asperreports-3.7.4.jar/download
• Registrierung bei JasperForge nicht zwingend erforderlich
(siehe Link im unteren Bereich der Seite)
• Alle Funktionalitäten in einer API gebündelt
• regelmäßige Releases - Minor Updates in monatlichen Zyklen
• zahlreiche Abhängigkeiten zu weiteren Bibliotheken
5. Jasper ReportsJasper Reports –– AbhängigkeitenAbhängigkeiten
5
JRE • Java Runtime Environment 1.4 or höher
Commons •Jakarta Commons BeanUtils Component (version 1.7 oder höher)
http://jakarta.apache.org/commons/beanutils/
•Jakarta Commons Collections Component (version 2.1 oder höher)
http://jakarta.apache.org/commons/collections/
•Jakarta Commons Javaflow (Sandbox version)
http://jakarta.apache.org/commons/sandbox/javaflow/
•Jakarta Commons Logging Component (version 1.0 oder höher)
http://jakarta.apache.org/commons/logging/
JRXML • JAXP 1.1 XML Parser
• Jakarta Commons Digester (version 1.7 oder höher)
http://jakarta.apache.org/commons/digester/
• Für die Report Übersetzung einen der folgenden Compiler:
•Eclipse JDT Java Compiler (recommended) http://www.eclipse.org/jdt/
•JDK 1.4 oder höher
•Jikes Compiler http://jikes.sourceforge.net
•Groovy (version 1.5.5 or later) http://groovy.codehaus.org
•BeanShell (version 2.0 beta 4 or later) http://www.beanshell.org
6. Jasper ReportsJasper Reports –– Abhängigkeiten 2Abhängigkeiten 2
6
JDBC • JDBC 2.0 Treiber
XLS • Jakarta POI (version 3.0.1 or later) http://jakarta.apache.org/poi/
• JExcelApi (version 2.6 or later) http://jexcelapi.sourceforge.net/
Charts • JFreeChart (>= Version 1.0.0) http://www.jfree.org/jfreechart/
•JCommon – für JFreeChart http://www.jfree.org/jcommon/
•Batik SVG Toolkit (>= Version 1.7) – erforderlich, wenn Charts als SVG gerendert werden sollen.
http://xmlgraphics.apache.org/batik/
PDF • iText - Freie Java-PDF library von Bruno Lowagie and Paulo Soares (>= version 1.3.1)
http://www.lowagie.com/iText/
7. Jasper ReportsJasper Reports ––Ablauf ReporterzeugungAblauf Reporterzeugung
7
Create
• Report Definition erzeugen
Load
•Reportsdesign laden
Compile
•Design kompilieren
Fill
•Design mit Daten füllen
Export
•Report exportieren oder anzeigen
8. Jasper ReportsJasper Reports –– ReportReport LifecycleLifecycle
8
JRXML JasperDesign JasperReport JasperPrint
JasperPrintManager
JasperFillManager
JasperCompileManager
JRXmlLoader JRCompiler
JasperExportManager
parse Compile
Fill
Screen
Printer
PDF
etc.
HTML
Print
Export
Report Lifecycle
9. Jasper ReportsJasper Reports –– Erstellen eines ReportsErstellen eines Reports
9
• Direkt per API über ein net.sf.jasperreports.engine.design.JasperDesign -Objekt
• Erstellen einer JRXML-Datei per Editor
• Nutzung eines Report Designers
• IReport:
• verfügbar unter http://jasperforge.org/projects/ireport
• Kommerzielle Version oder GPL-Version verfügbar
• direkt vom gleichen Projekt
• Jasper Assistant:
• verfügbar unter http://www.jasperassistant.com/
• Lizenz ab 129$
• Eclipse-Plugin verfügbar
13. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen
13
JasperReport JasperPrint
JasperFillManager
Fill
compiled
Report Template
Parameter DataSource
• Im “Fill”-Prozess werden neben Report Parametern, Resource Bundles, Locales, auch die
Daten an den Report übergeben.
• Ergebnis ist eine anzeigbare, druck- bzw. exportierbare Version des Reports als Objekt der
Klasse net.sf.jasperreports.engine.JasperPrint
14. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen
14
• Zum Füllen werden einem Objekt vom Typ net.sf.jasperreports.engine.JasperFillManager
• Übergeben werden für das Report Template
• java.io.InputStream oder
• net.sf.jasperreports.engine.JasperReport oder
• java.lang.String sourceFileName
• Parameter werden als java.util.Map params übergeben
• Daten werden übergeben als :
• Implementierung Interface JRDataSource oder
• java.sql.Connection connection
• Hierbei wird die eine SQL Query, die im Report definiert ist, per JDBC
Verbindung ausgeführt und das resultierende ResultSet-Objekt in eine
JRResultSetDataSource gewrapped
15. Jasper ReportsJasper Reports –– Report mit Daten füllenReport mit Daten füllen
15
…
JasperReport report =
JasperManager.compileReport(design);
ResultSet rs = getResultSet();
JRDataSource dataSource = new
JRResultSetDataSource(rs);
Map params = new java.util.HashMap();
params.put("Bonus", new Integer(12000));
params.put("Year", "2004");
JasperPrint print = JasperManager.fillReport(
report, param, dataSource);
Beispiel: Reportdesign befüllen
16. Jasper ReportsJasper Reports –– Report exportierenReport exportieren
16
JasperPrint
JasperPrintManager
JasperExportManager
Screen
Printer
PDF
XML
HTML
Print
Export
XLS (Excel)
(Word)RTF (Word)
TXT
CSV
18. Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen
18
• Zum Export wird in der Regel eine Instanz der Klasse
net.sf.jasperreports.engine.JasperExportManager verwendet.
• Methoden zum Export in PDF, HTML, XML im JasperExportManager vorhanden
• Output erfolgt in File, byte array oder in java.io.Outputstream
• Für den spezialisierten Export können Implementierungen des Interfaces
net.sf.jasperreports.engine .JRExporter genutzt werden
• Direkte Implementierungen sind:
JExcelApiExporter JRAbstractExporter, JRCsvExporter, JRDocxExporter, JRGraphics2DExporter, JRHtmlExporter,
JROdsExporter, JROdtExporter, JROpenDocumentExporter, JRPdfExporter, JRPptxExporter,
JRPrintServiceExporter, JRRtfExporter, JRTextExporter, JRXhtmlExporter, JRXlsAbstractExporter, JRXlsExporter,
JRXlsxExporter, JRXml4SwfExporter, JRXmlExporter, JRXmlssExporter
20. Jasper ReportsJasper Reports –– DatenquellenDatenquellen
20
• Datenquellen für einen Jasper Report müssen das Interface JRDatasource implementieren
• Zahlreiche Defaultimplementierungen vorhanden:
JRAbstractBeanDataSource, JRAbstractTextDataSource, JRBeanArrayDataSource,
JRBeanCollectionDataSource, JRCsvDataSource, JREmptyDataSource, JRHibernateAbstractDataSource,
JRHibernateIterateDataSource, JRHibernateListDataSource, JRHibernateScrollDataSource,
JRJpaDataSource, JRMapArrayDataSource, JRMapCollectionDataSource, JRMondrianDataSource,
JROlapDataSource, JRResultSetDataSource, JRSortableDataSource, JRTableModelDataSource,
JRXlsDataSource, JRXmlDataSource
public interface JRDataSource
{
public boolean next()
throws JRException;
public Object getFieldValue(JRField field)
throws JRException;
}
21. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport
21
• Einfache Installation
• Download der aktuellsten Version von Jasperforge und Start der EXE
• Verschiedene Wizards zur Erstellung erster Reports, Styles und SQL Queries
• Gute Unterstützung zur Positionierung und Ausrichtung von Report Elementen
• Preview in allen Ausgabeformaten und leichter Wechsel der Datenquellen
23. Jasper ReportsJasper Reports –– Felder und ParameterFelder und Parameter
23
• Benennung von Feldern und Parametern:
• Felder werden im Report mit $F { Feldname } angeprochen
• Parameter werden mit $P { Feldname } adressiert
• Resourcen werden mit $R { Feldname } adressiert
• Quelle der Felder ist ein Eintrag in der Datasource
• Quelle der Parameter ist die Map, die als Parameter beim Füllen des Reports übergeben
wurde
• Quelle der Resourcen ist das Language Resource Bundle des Berichts
• Der Feldname eines Parameters oder einer Resource muss dem Key in der Map oder dem
ResourceBundle entsprechen und der Typ dem jeweiligen Objekttyp
• Feldnamen für Felder hängen von der Datasource ab:
• Bei einem Resultset/Datenbank Abfrage ist der Feldname gleich dem Spaltennamen
• Bei einer Bean Datasource muss der Feldname dem Attribut des Beans entsprechen
• Bei einem TableModel müssen die Felder Column1, Column2, etc. genannt werden
24. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport
24
• Unterstützung von Expressions für
• die Anzeige (TextField Expression)
• konditionaler Druck (Print when expression)
• Unterstützung von Feldformaten
• Eigenschaften für Felder können parametrisiert werden
25. Jasper ReportsJasper Reports –– Chart SupportChart Support
25
• Jasper Reports benutzt die JFreeChart-Bibliothek zur Anzeige von Chart-Elementen
•Quelle: http://www.jfree.org/jfreechart/
• Es werden zahlreiche Chart-Typen unterstützt
• Chart lässt sich im Report durch externe Style-Datei
parametrisieren
26. Jasper ReportsJasper Reports –– Barcode SupportBarcode Support
26
• Jasper Reports unterstützt die Erstellung von Barcodes
• Verwendung von Barbecue
http://barbecue.sourceforge.net/
• Alternative Verwendung von Barcode4J
http://barcode4j.sourceforge.net/
• Unterstützung zahlreicher 1D- und 2D-Codes
27. Jasper ReportsJasper Reports –– InternationalisierungInternationalisierung
27
• Jasper Reports unterstützt Internationalisierung auf Basis der Java-Mittel
(Locale, Resource Bundle)
• Es werden Unicode (UTF-8), ISO-8859-1 (Latin 1) und weitere Encodings unterstützt.
• Ein Reportdesign kann so in verschiedenen Sprachen angezeigt werden.
• Übergabe Resource File und Locale in den Report-Parametern
HashMap params = new HashMap();
params.put("REPORT_RESOURCE_BUNDLE",reportlang.getLanguageResourceBun
dle());
params.put( "REPORT_LOCALE", Language.getLocaleObject() );
28. Jasper ReportsJasper Reports –– Literatur, Artikel,Literatur, Artikel, FAQ‘sFAQ‘s
28
• Ultimate Guides für Jasper Reports und iReport
von JasperSoft als PDF Buch verfügbar je 49,95$ incl.
Subscription für Updates
• The Definitive Guide to JasperReports ,
Teodor Danciu, Lucian Chirita , Giulio Toffoli
Amazon Preis: 37 EUR
• Jasperreports 3.5 for Java Developers ,
David Heffelfinger, Amazon Preis: 35 EUR
• JasperReports 3.6 Development Cookbook,
Bilal Siddiqui, 32 EUR, als PDF 22EUR
• The Definitive Guide to iReport ,
Giulio Toffoli ,Teodor Danciu
Amazon Preis: 42 EUR
• iReport 3.7,
Shamsuddin Ahammad
Amazon Preis: 42 EUR
29. Jasper ReportsJasper Reports –– AlternativenAlternativen
29
• BIRT - http://www.eclipse.org/birt/phoenix/
Unterstützung durch Actuate
• Crystal Reports - http://www.sap.com/solutions/sap-crystal-solutions/index.epx
SAP früher Business Objects
• Jreport - http://www.jinfonet.com/
Jinfonet Software
• Windward Reports - http://www.windwardreports.com
Windward Reports
• weitere Tools und Libs verfügbar:
http://java-source.net/open-source/charting-and-reporting
30. Jasper ReportsJasper Reports –– Auswahl des richtigen ToolsAuswahl des richtigen Tools
30
• Ziele für das Reporting definieren:
• Dokumentengenerierung (z.B. PDF, DOC)
- Rechnungen drucken, Listen ausgeben, etc.
• BI Abfragen mit AdHoc Queries und Datenanalyse
• Charting, Dashboards, grafische Ausgaben?
• Zielgruppe: Technik, Endanwender, Management
Soll der User selber Reports gestalten?
Welche techn. Skills hat er?
• Portabilität
Sind die Reporting Engines voll in Java umgesetzt oder werden proprietäre
Anwendungen genutzt? (z.B. MS Word, Windows dll, etc.)
• Templates:
Sollen Templates genutzt werden ?
Sollen Templates durch den Endanwender (Fachabteilung) erstellt werden
können?
31. Jasper ReportsJasper Reports –– QuoQuo VadisVadis??
31
• Starke Entwicklung in Richtung BI Tool
• Jaspersoft verteibt kommerziell Jaspersoft Business Intelligence Suite
• Jasper Server (kommerziell, GPL)
Report Server, Ad hoc Queries, Dashboard, Flash Charting, Datenanalyse/OLAP
• Jasper Report (LGPL)
Reportframework
• iReport (kommerziell, GPL)
Reportdesigner
• Jasper Analysis
OLAP Funktionalitäten
• Jasper ETL (kommerziell, GPL)
Datenintegration, Transformation
32. Jasper ReportsJasper Reports –– Pro & ContraPro & Contra
32
- Stabiles und mächtiges
Framework
- Einfache Reporterzeugung
- Ermöglicht einfaches Drucken
oder Dokumentenexport aus Java
Anwendungen heraus
- PDF Unterstüzung, viele
Formate
- Flexible Datenquellen
- Gut integrierbar
+
- Viele externe Abhängigkeiten
- Unklare Entwicklung des
Lizenzmodells
- Verknüpfung Feldbezeichner zur
Datenquelle
- Parameter nicht immer gut
dokumentiert
-
33. Best Practice for Capital Markets Compliance
Christian Blaser
Leiter Banking Solutions
b-next Engineering GmbH
Christian.Blaser@b-next.de
Fon: +(49) 05221 99 280 0
Vielen Dank für Ihre
Aufmerksamkeit
Vielen Dank für Ihre
Aufmerksamkeit