Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die...

43
Warum? JasperReports Kurzvorstellung, Features Getting Started Umsetzung relevanter Use Cases in JasperReports Integration with APEX Fazit Agenda 26.06.2012 Oracle Reports to JasperReports Page 1 3 Dinge! JasperReports ist eine mächtige Alternative zu Oracle Reports Die wichtigsten Design Patterns sind übersetzbar Einfache Integration mit APEX

Transcript of Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die...

Page 1: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Warum?

► JasperReports ▪  Kurzvorstellung, Features ▪  Getting Started ▪  Umsetzung relevanter Use Cases in JasperReports

► Integration with APEX

► Fazit

Agenda

26.06.2012 Oracle Reports to JasperReports Page 1

► 3 Dinge! ▪  JasperReports ist

eine mächtige Alternative zu Oracle Reports

▪  Die wichtigsten Design Patterns sind übersetzbar

▪  Einfache Integration mit APEX

Page 2: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Entwicklung von Web-Applikationen auf dem Oracle Stack seit 1997 ▪  Portal, Forms, Reports, OWA Toolkit, jetzt fokussiert auf APEX!

► Dipl.-Inform. Dietmar Aust, Freelance Consultant

► 1997-2000: Consultant bei Oracle in Düsseldorf

► Seit 09/2000: Freiberuflich, seit 2006 ausschließlicher Fokus APEX

► Blog: http://daust.blogspot.com/

► Regelmäßige Vorträge in der Oracle Community (ODTUG, DOAG, OOW)

► Bereitstellung kostenloser Tools, z.B die JasperReportsIntegration ▪  http://www.opal-consulting.de/tools

Vorstellung Opal Consulting

26.06.2012 Oracle Reports to JasperReports Page 2

Page 3: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Regelmäßige Durchführung von APEX Trainings zusammen mit Denes Kubicek

► Mitautor von „Oracle APEX und XE in der Praxis“ ▪  Veröffentlicht 21.12.2009 auf Deutsch

► Mitautor von „Expert Oracle Application Express“ −  Veröffentlicht 25.05.2011

−  Charity Projekt in Gedenken an Carl Backstrom und Scott Spadafore (ehemalige Entwickler aus dem APEX Team)

Vorstellung Opal Consulting

26.06.2012 Oracle Reports to JasperReports Page 3

Page 4: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Oracle Forms and Oracle Reports werden mittelfristig von Oracle nicht mehr unterstützt ▪  Viele Firmen suchen sich Alternativen zu Oracle Forms ▪  Oracle (Sales) empfiehlt Fusion / ADF, den „Java Stack“, ist es immer die

beste Wahl?

► Triftige Gründe, um zu APEX zu wechseln: ▪  Investitionsschutz

−  Es wurde bereits viel in die Business Logik mit PL/SQL investiert

−  Robuster, gut getesteter, performanter und zuverlässiger Code

▪  Menschen: −  Technologische Ähnlichkeit, SQL und PL/SQL ebenfalls Fundament

von APEX, sanfte Lernkurve durch Fokussierung auf Business Logik, HTML, CSS und Javascript später bei Bedarf hinzufügen

−  Motivierte Mitarbeiter durch schnelle Erfolgserlebnisse. APEX macht Spaß!

Warum? ::Ablösung von Oracle Forms und Reports?

26.06.2012 Oracle Reports to JasperReports Page 4

Page 5: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Alternativen im Open Source Bereich ▪  Eclipse BIRT, JasperReports und Pentaho ▪  Aktuelle Vergleichsstudie (2012, basiert auf JasperReports 4.5.0):

−  http://www.innoventsolutions.com/open-source-reporting-review-birt-jasper-pentaho.html

−  http://www.innoventsolutions.com/jasper-review.html

▪  JasperReports ist der Favorit für seitenoriente druckfähige Ausgaben

► JasperReports ▪  Begonnen auf Sourceforge in 2001, 2005 kam Release 1.0 ▪  Kontinuierliche Weiterentwicklung (mind. 6 Releases pro Jahr) ▪  Der am häufigsten eingesetzte Open Source Berichtsgenerator mit über

175.000 produktiven Installationen weltweit ▪  Case Studies: http://www.jaspersoft.com/case-studies ▪  Kommerzieller Support und Training ist verfügbar ▪  Open Source => kein Vendor-lock in

Warum? ::Alternativen?

26.06.2012 Oracle Reports to JasperReports Page 5

Page 6: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Komponenten ▪  JasperReports Library

−  http://jasperforge.org/projects/jasperreports

−  Die Laufzeitumgebung

▪  iReport Designer −  http://jasperforge.org/projects/ireport

−  Editor für den visuellen Entwurf des Berichts

−  Das JasperSoft Studio ist eine alternative Implementierung basierend auf Eclipse

▪  JasperReports Server −  http://jasperforge.org/projects/jasperserver

−  Portal für das Deployment, Benutzer- verwaltung und Rechtemangement

JasperReports ::Die Komponenten

26.06.2012 Oracle Reports to JasperReports Page 6

Page 7: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Was ist es? ▪  „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen

integriert werden kann, z.B. SWING, RCP, J2EE, auf der Kommandozeile mit ANT oder direkt Java.

▪  Basiert auf anderen Open Source Bibliotheken wie iText, Groovy, Hibernate, JFreeChart, Log4J, POI, etc.

► In der Entwurfsphase ▪  Berichtsdefinition im XML Format (z.B. report.jrxml) ▪  Umwandlung (Kompilation) in ein Binärformat (z.B. report.jasper)

► Zur Laufzeit ▪  Es wird eine Datenquelle initialisiert ▪  Laufzeitparameter werden an JasperReports übergeben und der Bericht

mit Daten befüllt. Daraus entsteht ein JasperPrint Objekt ▪  Dieses kann dann in die verschiedenen Formate exportiert werden (HTML,

PDF, XLS, DOC, RTF, DOCX, ...)

JasperReports ::Architektur

26.06.2012 Oracle Reports to JasperReports Page 7

Page 8: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Funktionen: ▪  JasperReports bietet alle Funktionen, die ein moderner

Berichtsgenerator haben sollte ▪  Datenquellen: JDBC, XML, OLAP, TEXT, Hadoop …, zus. beliebige

Erweiterbarkeit über benutzerdefinierte Datenquellen ▪  Mehrere Datenquellen pro Bericht ▪  Ausgabeformate: pdf, xls, xlsx, html, xhmtl, csv, text, rtf, odf, docx, pptx, ... ▪  Matrixberichte ▪  Charts (JFreechart) ▪  Berichtstrigger ▪  Unterberichte / Modularisierung / Wiederverwendbarkeit ▪  Bedingte Formatierung (Stile) ▪  Bedingte Darstellung von Feldern ▪  Skriptsprachen, insbesondere für Berechnungen und Bedingungen: Java,

Groovy, Javascript ▪  Fonts, Unicode, NLS ▪  …

JasperReports ::Funktionen

26.06.2012 Oracle Reports to JasperReports Page 8

Page 9: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

JasperReports ::Beispiele

26.06.2012 Oracle Reports to JasperReports Page 9

Page 10: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

JasperReports ::Beispiele

26.06.2012 Oracle Reports to JasperReports Page 10

Page 11: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

JasperReports ::Beispiele

26.06.2012 Oracle Reports to JasperReports Page 11

► Weitere Beispiele: ▪  JasperReports-­‐Demo-­‐Documents/

Page 12: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

JasperReports ::iReport Designer GUI

26.06.2012 Oracle Reports to JasperReports Page 12

Page 13: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► JasperReports ist verfügbar unter der Lesser General Public License version 3 (LGPLv3) ▪  http://www.gnu.org/licenses/lgpl-3.0.html

► JasperReports kann ▪  in Produktionssystemen im Unternehmen verwendet oder auch ▪  in kommerziellen Systemen eingebettet werden (solange die jar-Dateien

nicht geändert werden)

► Alle verwendeten Bibliotheken sind nicht viral (ähnlich zu GPL), also meistens Apache oder LGPL Lizenzen: ▪  http://jasperforge.org/plugins/espforum/view.php?

group_id=102&forumid=103&topicid=7255

► Disclaimer: Dies ist keine gesicherte rechtliche Auskunft, bitte die Lizenzbedingungen für den eigenen Fall prüfen lassen

JasperReports ::Lizensierung

26.06.2012 Oracle Reports to JasperReports Page 13

Page 14: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► JasperReports Library ▪  http://jasperforge.org/website/jasperreportswebsite/trunk/

documentation.html?header=project&target=jasperreports

JasperReports ::Getting Started

26.06.2012 Oracle Reports to JasperReports Page 14

Page 15: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► JasperReports Library ▪  Referenz der Beispiele:

http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/sample.reference.html

▪  Separater Download des Sourcecodes mit allen Beispielen (jasperreports-4.6.0-project.zip)

► iReport Designer ▪  Forum: http://jasperforge.org/projects/ireport/forum/ ▪  Wiki: http://jasperforge.org/plugins/mwiki/index.php/Ireport ▪  Tutorials & Hilfe:

http://jasperforge.org/uploads/publish/ireportwebsite/IR%20Website/ir_documentation.html

JasperReports ::Getting Started

26.06.2012 Oracle Reports to JasperReports Page 15

Page 16: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Kostenpflichtiges Material: http://www.Jaspersoft.com ▪  iReport Designer Ultimate Guide (33€) ▪  https://www.jaspersoft.com/store/ireport-ultimate-guide-documentation ▪  Online Training, instructor led classes

JasperReports ::Getting Started

26.06.2012 Oracle Reports to JasperReports Page 16

Page 17: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► iReport Designer – die eingebauten Beispiele nutzen ▪  Zuerst die Sample Database starten (im aktuellen Java Prozess)

▪  Datenquelle auswählen

▪  Die jeweiligen Beispielberichte ausführen ▪  Die Datenbank wird automatisch heruntergefahren, wenn der iReport

Designer geschlossen wird

JasperReports ::Getting Started

26.06.2012 Oracle Reports to JasperReports Page 17

Page 18: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► In den folgenden Folien konzentriere ich mich auf den Übergang von Oracle Reports zu JasperReports sowie einige allgemeine Fragestellungen, mit denen die Anwender Probleme haben.

► Die Beispiele basieren auf dem OEHR Beispiel-Schema: ▪  http://www.oracle.com/technetwork/developer-tools/apex/application-

express/packaged-apps-090453.html

► Die beiden Berichtsgeneratoren unterscheiden sich in der Art, wie der Bericht abgearbeitet wird und auch wie ein Layout definiert wird.

► Oracle Reports: ▪  Multiple Layouts pro Bericht möglich ▪  Elemente können vertikal

und horizontal expandieren ▪  Rahmen und Wiederholungsrahmen ▪  Verwendung von Ankern

JasperReports ::Kann ich alle Fragestellungen lösen?

26.06.2012 Oracle Reports to JasperReports Page 18

Page 19: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Berichtsbänder ▪  Title: erscheint nur einmalig am Anfang des Berichtes.

▪  pageHeader: erscheint oben auf jeder Seite, üblicherweise um Logos, den Firmennamen oder Datumsinformationen zu platzieren.

▪  columnHeader: listet die Spaltenüberschriften auf für Datenfelder im Detailbereich

▪  Detail: ist der Bereich, in dem alle Zeilen einer Abfrage ausgegeben werden

▪  columnFooter: dient der Zusammenfassung der Werte im Detailbereich, um z.B. Summen, Durschnitte oder andere Aggregate darzustellen

▪  pageFooter: erscheint unten auf jeder Seite

▪  Summary: erscheint am Ende des Berichts

JasperReports ::Report Layout

26.06.2012 Oracle Reports to JasperReports Page 19

Beispiel: 01-­‐Understanding-­‐Report-­‐Bands/understanding-­‐report-­‐bands.jrxml  

Page 20: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Report Layout mit JasperReports / Tipps: ▪  Berichtsbänder bestimmen das Layout und die Verarbeitung ▪  Einige Bänder expandieren nach Bedarf ▪  Layout Objekte können innerhalb eines Bandes unterschiedlich positioniert

werden (Positionstyp): −  Fix relative to top

−  Float (wichtig, damit Elemente nach unten verschoben werden können)

−  Fix relative to bottom

▪  Wichtige Einschränkung: −  Die max. Höhe eines Bandes kann nicht größer sein als die

Seitenhöhe!

−  Workaround: Ein weiteres Detail-Band hinzufügen

JasperReports ::Report Layout

26.06.2012 Oracle Reports to JasperReports Page 20

Page 21: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Report Layout mit JasperReports / Tipps: ▪  Elementeigenschaft „Remove line when blank“ lässt leeren Platz

kollabieren, wenn das Feld über eine Bedingung unterdrückt wird:

▪  Mit Frames Inhalte gruppieren −  Mit der Maus kann im Report Inspector

die Zugehörigkeit zum Frame verändert werden

JasperReports ::Report Layout

26.06.2012 Oracle Reports to JasperReports Page 21

Page 22: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Master-Detail Beziehung ▪  Beispiel: Standort und alle Abteilungen an diesem Standort ▪  02-­‐Master-­‐Detail/master-­‐detail.jrxml  

► Implementierung ganz normal über den Wizard, vordefinierte Templates und Stile sind zu empfehlen

JasperReports ::Use Case #: Master – Detail

26.06.2012 Oracle Reports to JasperReports Page 22

Demo: Master-Detail Beziehung mit

Template und Stilen

Page 23: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Master- multiple Details ▪  Beispiel: Standort, alle Abteilungen und Lager am Standort ▪  02-­‐Master-­‐Detail/master-­‐multiple-­‐details-­‐

subreport.jrxml  

► Implementierung mit Unterberichten (Subreports)

► Wie? ▪  Subreport Element auf den Designbereich ziehen ▪  Parameter für den Aufruf übergeben und auf den Master filtern

► Vorteile / Nachteile ▪  Für jede Detail-Abfrage wird eine neue Berichtsdatei benötigt ▪  Gut geeignet, weitere Komplexität aufzubrechen und in den

Subreport zu verlagern ▪  Wiederverwendbarkeit / Modularisierung

JasperReports ::Use Case #: Master – multiple Details

26.06.2012 Oracle Reports to JasperReports Page 23

Demo: Master-multi-Detail Report mit

Unterbericht

Page 24: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Master- multiple Details ▪  Beispiel: Standort, alle Abteilungen und Lager am Standort ▪  02-­‐Master-­‐Detail/master-­‐detail-­‐table-­‐

component.jrxml  

► Implementierung mit der Table Component

► Wie? ▪  Table Component auf den Designbereich ziehen ▪  Dataset innerhalb des Berichtes erstellen ▪  Hat fast alle Eigenschaften eines Unterberichts

► Vorteile / Nachteile ▪  Direkt im Bericht integriert ▪  „Nur“ eine Tabelle, kein Titel-/

Summary Band

JasperReports ::Use Case #: Master – multiple Details

26.06.2012 Oracle Reports to JasperReports Page 24

Demo: Master-multi-Detail Report mit Table Component

Page 25: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Bedingte Anzeige einer Spalte ▪  Beispiel: Details anzeigen oder unterdrücken in Abhängigkeit der Daten

oder eines Parameters ▪  03-­‐Conditional-­‐Columns/conditional-­‐columns.jrxml

► Implementierung mit der Table Component ▪  http://thinkinginsoftware.blogspot.de/2011/06/ireport-dynamically-hide-

show-columns.html ▪  „Print when“ Ausdruck auf der jeweiligen Spalte definieren

−  Z.B. $P{p_show_details}=="YES"

JasperReports ::Use Case #: Bedingte Anzeige einer Spalte

26.06.2012 Oracle Reports to JasperReports Page 25

Page 26: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Bedingte Formatierung (aka Format Trigger) ▪  Beispiel: der Auftragsstatus wird farblich gekennzeichet,

sowohl Zellen als auch Zeilen ▪  04-­‐Conditional-­‐Formatting/conditional-­‐

formatting.jrxml

► Implementierung mit Stilen und bedingten Stilen

► Wie? ▪  Stil erstellen ▪  Bedingung zu Stil hinzufügen ▪  Bedingten Stil einem oder mehreren Elementen hinzufügen

► Vorteile / Nachteile ▪  Flexibel und wiederverwendbar ▪  Nicht ganz so intuitiv

JasperReports ::Use Case #: Bedingte Formatierung

26.06.2012 Oracle Reports to JasperReports Page 26

Demo: Bedingte Formatierung

Page 27: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Berichtstrigger ▪  Beispiel: Zu Beginn des Berichtes DML oder DDL Statements

absetzen ▪  05-­‐Report-­‐Trigger/report-­‐trigger.jrxml

► Implementierung mit Scriptlets

► Wie? ▪  Java Klasse erstellen (Default Klasse JRDefaultScriptlet) und

benötigte Handler überschreiben, z.B. beforeReportInit() ▪  Klasse kompilieren ▪  Scriplet in Bericht registrieren

► Vorteile / Nachteile ▪  Durch einen JDBC Aufruf kann das Haupt-Select im Bericht

nicht beeinflusst werden, nur nachgelagerte Abfragen in einem Dataset oder Subreport

JasperReports ::Use Case #: Berichtstrigger

26.06.2012 Oracle Reports to JasperReports Page 27

Demo: Report-trigger

Page 28: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► User Exits ▪  Beispiel: C / C++ können zur Laufzeit in Oracle Reports eingebunden

werden ▪  05-­‐Report-­‐Trigger/report-­‐trigger.jrxml

► Implementierung mit Scriplets ▪  Scriptlets können direkt per Methode aufgerufen werden oder an

verschiedenen Punkten in der Berichterstellung interne Variablen beeinflussen.

▪  Die Scriplets werden in Java geschrieben

JasperReports ::Use Case #: User Exits

26.06.2012 Oracle Reports to JasperReports Page 28

Page 29: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Modularisierung / Wiederverwendbarkeit ▪  Beispiel: Die Firmenadresse bzw. Liste der Geschäftsführer ist Bestandteil

von 100+ Berichten. Sollte sich daran etwas ändern, müssen alle Berichte aktualisiert werden.

▪  06-­‐Modularization/modularization.jrxml

► Implementierung mit Unterberichten ▪  Mit einem Unterbericht kann die Fußzeile nur einmalig in einem Bericht

erstellt werden und in allen anderen Berichten als Unterbericht integriert werden.

JasperReports ::Use Case #: Modularisierung / Wiederverwendbarkeit

26.06.2012 Oracle Reports to JasperReports Page 29

Page 30: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Internationalisierung ▪  Beispiel: Der Bericht soll sowohl auf Deutsch als auch

auf Englisch und Französisch ausgeführt werden. Jeweils soll das entsprechende Datums- und Zahlenformat berücksichtigt werden.

▪  07-­‐Internationalization/I18nReport.jrxml

► Implementierung ▪  Java unterstützt Internationalisierung vollständig (i18n

compliant) ▪  Formatmasken benutzen Platzhalter für NLS analog zu

Oracle, z.B. #,##0.00 ▪  Textbausteine können über Properties-Dateien

ausgelagert werden

► Tipp: ▪  Umstellung der Landeseinstellungen in iReport über

Einstellungen > iReport > Compilation and Execution

JasperReports ::Use Case #: Internationalisierung

26.06.2012 Oracle Reports to JasperReports Page 30

Demo: internationalization

Page 31: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Abfragen basierend auf einem Refcursor ▪  Beispiel: Der Bericht soll auf einem Refcursor ausgeführt werden. ▪  08-­‐RefCursor-­‐Query/refcursor.jrxml

► Implementierung mit Standardfunktionalität ▪  Wird direkt in JasperReports unterstützt ▪  Als Abfragesprache „plsql“ auswählen

► Tipps: ▪  http://rajendratambat.blogspot.de/2011/10/calling-oracle-stored-procedure-

in.html ▪  http://michakurt.blogspot.de/2010/02/how-to-integrate-jasperserver-

and.html

JasperReports ::Use Case #: Abfragen basierend auf einem Refcursor

26.06.2012 Oracle Reports to JasperReports Page 31

Page 32: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Abfragen basierend auf einem Refcursor

► Vorteile / Nachteile ▪  Die Datenfelder müssen manuell von Hand definiert werden ▪  Sehr gut geeignet, um einen VPD Kontext zu setzen, da damit die Abfrage

im Bericht direkt beeinflusst wird!

JasperReports ::Use Case #: Abfragen basierend auf einem Refcursor

26.06.2012 Oracle Reports to JasperReports Page 32

Page 33: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► JasperReportsIntegration – kostenlose Integration mit APEX ▪  http://www.opal-consulting.de/tools ▪  http://www.opal-consulting.de/forums

Integration mit Oracle APEX

26.06.2012 Oracle Reports to JasperReports Page 33

Page 34: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Architektur ▪  1: Benutzer klickt auf Link in APEX ▪  2: PL/SQL API erstellt URL inkl.

Parameterübergabe, um J2EE Anwendung zu starten (über utl_http)

▪  3: JasperReports erstellt JDBC zurück zu Oracle, führt Bericht aus und liefert Berichtsergebnis (z.B. PDF) zurück

► Eigenschaften ▪  Die Berichtsdateien werden lokal auf dem J2EE Server gespeichert.

−  Einfach zu entwickeln komplett aus iReport heraus, keine Roundtrips notwendig

▪  Sicherheit durch Firewall implementiert ▪  Die API liefert einen BLOB zurück

−  Direkt dem Benutzer anzeigen, in Tabelle speichern oder als Email Attachment verschicken

Integration mit Oracle APEX ::Architektur

26.06.2012 Oracle Reports to JasperReports Page 34

Page 35: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Test der J2EE Anwendung ▪  http://<server>:<port>/JasperReportsIntegration/ ▪  1: Test der JDBC Connection

−  http://<server>:<port>/JasperReportsIntegration/test?_dataSource=default

▪  2: Testbericht gegen die eigene Datenbank ausführen (test.jasper) −  http://<server>:<port>/JasperReportsIntegration/report?

_repName=test&_repFormat=pdf&_dataSource=default

▪  3: Parameter an den Bericht übergeben −  http://<server>:<port>/JasperReportsIntegration/report?

_repName=test&_repFormat=pdf&_dataSource=default&parameter1=1&parameter2=2

► Tipp: ▪  Die Besten Fehlermeldungen erhält man bei der Ausgabe im HTML

Format

Integration mit Oracle APEX ::Getting started

26.06.2012 Oracle Reports to JasperReports Page 35

Page 36: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Die Beispiel-Applikation (im Download enthalten) ▪  src/apex/

f860_JasperIntegrationTest_1.1.0.0.sql ▪  Einfache Tests der installierten Software

▪  Report testing tool

Integration mit Oracle APEX ::Getting started

26.06.2012 Oracle Reports to JasperReports Page 36

► Demo der API Aufrufe: ▪  Show report ▪  Get report as BLOB

Page 37: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Schritt für Schritt Anleitung zur Integration in die Beispiel-Applikation: ▪  http://www.opal-consulting.de/downloads/free_tools/

JasperReportsIntegration/Opal-Consulting-JasperReportsIntegration.pdf

Integration mit Oracle APEX ::Getting started

26.06.2012 Oracle Reports to JasperReports Page 37

Page 38: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► JasperReports ist eine mächtige Alternative zu Oracle Reports

► Die wichtigsten Design Patterns sind übersetzbar

► Die Integration mit Oracle APEX ist einfach

► Vorsicht mit den Bibliotheken bzgl. der Lizenzen, am besten die Versionen verwenden, die iReport mit ausliefert.

Fazit

26.06.2012 Oracle Reports to JasperReports Page 38

Page 39: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

Q&A

Dietmar Aust Opal-Consulting, Köln

www.opal-consulting.de daust.blogspot.com [email protected]

Q&A

26.06.2012 Oracle Reports to JasperReports Page 39

Page 40: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

Backup-Folien

Bei Bedarf

Backup – zus. Folien

26.06.2012 Oracle Reports to JasperReports Page 40

Page 41: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► Jeder redet von einem Ersatz für Oracle Forms, was ist jedoch mit Oracle Reports? ▪  Oracle Reports ist immer noch in 12c dabei, es wurde jedoch erst in der

letzen Minute entschieden

► Oracle BI-Publisher? ▪  Pro:

−  Power User können direkt mit den Office Produkten Templates erstellen (Excel, Word und auch PDF Templates möglich)

▪  Contra: −  Kosten

−  Komplexe pixel-perfekte Layouts können nicht vollständig umgesetzt werden

−  Komplexere Funktionalitäten nur über direkte Verwendung von XSLT Befehlen

−  Spalten in einer Tabelle können nicht konditional ausgeblendet werden

Warum? ::Ablösung von Oracle Forms und Reports?

26.06.2012 Oracle Reports to JasperReports Page 41

Page 42: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

►  iReport Designer und JasperServer Lizenz:

►  GNU Affero General Public License version 3 (AGPLv3), modifizierte Variante der GPLv3

► Alle Lizenzvereinbarungen werden zusammen mit den jeweiligen Bibliotheken ausgeliefert:

► Disclaimer: Dies ist keine gesicherte rechtliche Auskunft, bitte die Lizenzbedingungen für den eigenen Fall prüfen lassen

JasperReports ::Lizensierung

26.06.2012 Oracle Reports to JasperReports Page 42

Page 43: Agenda - Opal Consulting...2012/06/14  · Was ist es? „Einfach nur“ eine Java Bibliothek, die in beliebige Java Applikationen integriert werden kann, z.B. SWING, RCP, J2EE, auf

► How can we implement access control to our reports and the data? ▪  We can implement a simple or complex scheme based on our

requirements. ▪  The J2EE server can only be reached through APEX / the database ▪  The user is authenticated against APEX => we can use :APP_USER

safely

► Access control to the report ▪  Can be implemented as an authorization scheme

► Access control to the underlying data ▪  Check the users‘ privileges before calling the report via the API.

Integration mit Oracle APEX ::Security - Authorization

26.06.2012 Oracle Reports to JasperReports Page 43