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

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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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