SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
1
Christian Blaser
b-next Engineering GmbH
Jasper Reports
Java Expertenkreis
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
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
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
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
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/
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
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
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
Jasper ReportsJasper Reports ––ReportdesignReportdesign
10
• Report-Design erfolgt in einem XML-Dialekt
• Speicherung als JRXML-Datei
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasper
report.dtd">
<jasperReport name="Simple_Report">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200"
height="20"/>
<text><![CDATA[Hello World!]]></text>
</staticText>
</band>
</detail>
</jasperReport>
Jasper ReportsJasper Reports –– Aufbau eines BerichtsAufbau eines Berichts
11
• Berichtsabschnitte (Sections)
Title
Page header
Column header
Detail
Column footer
Page footer
Summary
Last page footer
Background
• Attribute
Band height
Preventing band split
Skipping bands
• Gruppierungen
• Felder, Variablen, Expressions
• Parameter
• Report Query oder Datenquelle
• Subreports
• Charts
Jasper ReportsJasper Reports –– Report ladenReport laden
12
import dori.jasper.engine.*;
import dori.jasper.engine.design.*;
JasperDesign design =
JasperManager.loadXmlDesign("hello.jrxml");
JasperReport report =
JasperManager.compileReport(design);
JRXML JasperDesign JasperReport
JasperCompileManager
JRXmlLoader JRCompiler
parse Compile
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
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
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
Jasper ReportsJasper Reports –– Report exportierenReport exportieren
16
JasperPrint
JasperPrintManager
JasperExportManager
Screen
Printer
PDF
XML
HTML
Print
Export
XLS (Excel)
(Word)RTF (Word)
TXT
CSV
Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen
17
…
JasperPrint print = JasperManager.fillReport(
report, param, dataSource);
<!-- FileExport -->
JasperExportManager.exportReportToHtmlFile(
print, "hello.html");
JasperExportManager.exportReportToPdfFile(
print, "hello.pdf");
JasperExportManager.exportReportToXmlFile(
print, "hello.xml", false);
<!-- Bildschirmanzeige -->
JasperViewer jv = new JasperViewer( jasperPrint,
false, locale);
jv.setVisible( true );
Beispiel: Reportdesign exportieren oder anzeigen
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
Jasper ReportsJasper Reports –– ViewerViewer
19
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;
}
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
Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport
22
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
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
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
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
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() );
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
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
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?
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
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
-
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

Más contenido relacionado

Destacado

Lecturecomprhension
LecturecomprhensionLecturecomprhension
Lecturecomprhension
Sanaa Sanaa
 
Ml0013 retail it management
Ml0013   retail it managementMl0013   retail it management
Ml0013 retail it management
smumbahelp
 
Klöckner & Co - Zwischenbericht zum 30. Juni 2012
Klöckner & Co - Zwischenbericht zum 30. Juni 2012Klöckner & Co - Zwischenbericht zum 30. Juni 2012
Klöckner & Co - Zwischenbericht zum 30. Juni 2012
Klöckner & Co SE
 
Sewage treatmenttechnology
Sewage treatmenttechnologySewage treatmenttechnology
Sewage treatmenttechnology
safwan patel
 
Sobral 2006. mem+¦ria identidade
Sobral 2006. mem+¦ria identidadeSobral 2006. mem+¦ria identidade
Sobral 2006. mem+¦ria identidade
LeonFR
 
How to make presentations
How to make presentationsHow to make presentations
How to make presentations
Sandeep Mishra
 

Destacado (14)

Lecturecomprhension
LecturecomprhensionLecturecomprhension
Lecturecomprhension
 
Publications of patent applications by Indian Patent Office and Indian Grante...
Publications of patent applications by Indian Patent Office and Indian Grante...Publications of patent applications by Indian Patent Office and Indian Grante...
Publications of patent applications by Indian Patent Office and Indian Grante...
 
Tenerife
TenerifeTenerife
Tenerife
 
Ml0013 retail it management
Ml0013   retail it managementMl0013   retail it management
Ml0013 retail it management
 
Erfahrungen mit BelforFx
Erfahrungen mit BelforFxErfahrungen mit BelforFx
Erfahrungen mit BelforFx
 
Klöckner & Co - Zwischenbericht zum 30. Juni 2012
Klöckner & Co - Zwischenbericht zum 30. Juni 2012Klöckner & Co - Zwischenbericht zum 30. Juni 2012
Klöckner & Co - Zwischenbericht zum 30. Juni 2012
 
Produksjonsprosessen: Kvalitetssäkring av statistikproduktionen
Produksjonsprosessen: Kvalitetssäkring av statistikproduktionenProduksjonsprosessen: Kvalitetssäkring av statistikproduktionen
Produksjonsprosessen: Kvalitetssäkring av statistikproduktionen
 
Soda Vending Machines For Sale
Soda Vending Machines For SaleSoda Vending Machines For Sale
Soda Vending Machines For Sale
 
Ms 03 economic and social environment
Ms   03 economic and social environmentMs   03 economic and social environment
Ms 03 economic and social environment
 
Sewage treatmenttechnology
Sewage treatmenttechnologySewage treatmenttechnology
Sewage treatmenttechnology
 
Sobral 2006. mem+¦ria identidade
Sobral 2006. mem+¦ria identidadeSobral 2006. mem+¦ria identidade
Sobral 2006. mem+¦ria identidade
 
TARABAJO DE ACCESS 2010
TARABAJO DE ACCESS 2010TARABAJO DE ACCESS 2010
TARABAJO DE ACCESS 2010
 
Web 2.0 - Khouse CRP
Web 2.0 - Khouse CRPWeb 2.0 - Khouse CRP
Web 2.0 - Khouse CRP
 
How to make presentations
How to make presentationsHow to make presentations
How to make presentations
 

Similar a Reporting mit Jasper Reports

Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
Samuel Zürcher
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
Splunk
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
guestc44b7b
 

Similar a Reporting mit Jasper Reports (20)

Jasper Reporting in Webapplications
Jasper Reporting in WebapplicationsJasper Reporting in Webapplications
Jasper Reporting in Webapplications
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
Java EE Microservices ohne Server
Java EE Microservices ohne ServerJava EE Microservices ohne Server
Java EE Microservices ohne Server
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle Tools
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Let's talk about Java EE
Let's talk about Java EELet's talk about Java EE
Let's talk about Java EE
 
profil_2017
profil_2017profil_2017
profil_2017
 
GWT
GWTGWT
GWT
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Sesam (APEX) Öffne Dich
Sesam (APEX) Öffne DichSesam (APEX) Öffne Dich
Sesam (APEX) Öffne Dich
 

Reporting mit Jasper Reports

  • 1. 1 Christian Blaser b-next Engineering GmbH Jasper Reports Java Expertenkreis
  • 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
  • 10. Jasper ReportsJasper Reports ––ReportdesignReportdesign 10 • Report-Design erfolgt in einem XML-Dialekt • Speicherung als JRXML-Datei <?xml version="1.0"?> <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasper report.dtd"> <jasperReport name="Simple_Report"> <detail> <band height="20"> <staticText> <reportElement x="180" y="0" width="200" height="20"/> <text><![CDATA[Hello World!]]></text> </staticText> </band> </detail> </jasperReport>
  • 11. Jasper ReportsJasper Reports –– Aufbau eines BerichtsAufbau eines Berichts 11 • Berichtsabschnitte (Sections) Title Page header Column header Detail Column footer Page footer Summary Last page footer Background • Attribute Band height Preventing band split Skipping bands • Gruppierungen • Felder, Variablen, Expressions • Parameter • Report Query oder Datenquelle • Subreports • Charts
  • 12. Jasper ReportsJasper Reports –– Report ladenReport laden 12 import dori.jasper.engine.*; import dori.jasper.engine.design.*; JasperDesign design = JasperManager.loadXmlDesign("hello.jrxml"); JasperReport report = JasperManager.compileReport(design); JRXML JasperDesign JasperReport JasperCompileManager JRXmlLoader JRCompiler parse Compile
  • 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
  • 17. Jasper ReportsJasper Reports –– Report exportieren / anzeigenReport exportieren / anzeigen 17 … JasperPrint print = JasperManager.fillReport( report, param, dataSource); <!-- FileExport --> JasperExportManager.exportReportToHtmlFile( print, "hello.html"); JasperExportManager.exportReportToPdfFile( print, "hello.pdf"); JasperExportManager.exportReportToXmlFile( print, "hello.xml", false); <!-- Bildschirmanzeige --> JasperViewer jv = new JasperViewer( jasperPrint, false, locale); jv.setVisible( true ); Beispiel: Reportdesign exportieren oder anzeigen
  • 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
  • 19. Jasper ReportsJasper Reports –– ViewerViewer 19
  • 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
  • 22. Jasper ReportsJasper Reports –– Reportdesign mitReportdesign mit iReportiReport 22
  • 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