Agenda
► Warum?
► JasperReports
▪ Kurzvorstellung, Features
▪ Getting Started
▪ Umsetzung relevanter Use Cases in JasperReports
► Integration with APEX
► 3 Dinge!
▪ JasperReports ist
eine mächtige
Alternative zu
Oracle Reports
▪ Die wichtigsten
Design Patterns
sind übersetzbar
▪ Einfache
Integration mit
APEX
► Fazit
Oracle Reports to JasperReports
26.06.2012
Page 1
Vorstellung Opal Consulting
► 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
Oracle Reports to JasperReports
26.06.2012
Page 2
Vorstellung Opal Consulting
► 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)
Oracle Reports to JasperReports
26.06.2012
Page 3
Warum?
::Ablösung von Oracle Forms und Reports?
► 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ß!
Oracle Reports to JasperReports
26.06.2012
Page 4
Warum?
::Alternativen?
► 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-birtjasper-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
Oracle Reports to JasperReports
26.06.2012
Page 5
JasperReports
::Die Komponenten
► 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, Benutzerverwaltung und Rechtemangement
Oracle Reports to JasperReports
26.06.2012
Page 6
JasperReports
::Architektur
► 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, ...)
Oracle Reports to JasperReports
26.06.2012
Page 7
JasperReports
::Funktionen
► 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
▪ …
Oracle Reports to JasperReports
26.06.2012
Page 8
JasperReports
::Beispiele
Oracle Reports to JasperReports
26.06.2012
Page 9
JasperReports
::Beispiele
Oracle Reports to JasperReports
26.06.2012
Page 10
JasperReports
::Beispiele
► Weitere Beispiele:
▪ JasperReports-­‐Demo-­‐Documents/
Oracle Reports to JasperReports
26.06.2012
Page 11
JasperReports
::iReport Designer GUI
Oracle Reports to JasperReports
26.06.2012
Page 12
JasperReports
::Lizensierung
► 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
Oracle Reports to JasperReports
26.06.2012
Page 13
JasperReports
::Getting Started
► JasperReports Library
▪ http://jasperforge.org/website/jasperreportswebsite/trunk/
documentation.html?header=project&target=jasperreports
Oracle Reports to JasperReports
26.06.2012
Page 14
JasperReports
::Getting Started
► 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
Oracle Reports to JasperReports
26.06.2012
Page 15
JasperReports
::Getting Started
► 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
Oracle Reports to JasperReports
26.06.2012
Page 16
JasperReports
::Getting Started
► 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
Oracle Reports to JasperReports
26.06.2012
Page 17
JasperReports
::Kann ich alle Fragestellungen lösen?
► 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/applicationexpress/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
Oracle Reports to JasperReports
26.06.2012
Page 18
JasperReports
::Report Layout
► 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
Beispiel: 01-­‐Understanding-­‐Report-­‐Bands/understanding-­‐report-­‐bands.jrxml Oracle Reports to JasperReports
26.06.2012
Page 19
JasperReports
::Report Layout
► 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
Oracle Reports to JasperReports
26.06.2012
Page 20
JasperReports
::Report Layout
► 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
Oracle Reports to JasperReports
26.06.2012
Page 21
JasperReports
::Use Case #: Master – Detail
► 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
Oracle Reports to JasperReports
Demo: Master-Detail
Beziehung mit
Template und Stilen
26.06.2012
Page 22
JasperReports
::Use Case #: Master – multiple Details
► Master- multiple Details
▪ Beispiel: Standort, alle Abteilungen und Lager am Standort
▪ 02-­‐Master-­‐Detail/master-­‐multiple-­‐details-­‐
subreport.jrxml ► Implementierung mit Unterberichten (Subreports)
Demo: Master-multiDetail Report mit
Unterbericht
► 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
Oracle Reports to JasperReports
26.06.2012
Page 23
JasperReports
::Use Case #: Master – multiple Details
► Master- multiple Details
▪ Beispiel: Standort, alle Abteilungen und Lager am Standort
▪ 02-­‐Master-­‐Detail/master-­‐detail-­‐table-­‐
component.jrxml ► Implementierung mit der Table Component
Demo: Master-multiDetail Report mit
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
Oracle Reports to JasperReports
26.06.2012
Page 24
JasperReports
::Use Case #: Bedingte Anzeige einer Spalte
► 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-hideshow-columns.html
▪ „Print when“ Ausdruck auf der jeweiligen Spalte definieren
− Z.B. $P{p_show_details}=="YES"
Oracle Reports to JasperReports
26.06.2012
Page 25
JasperReports
::Use Case #: Bedingte Formatierung
► Bedingte Formatierung (aka Format Trigger)
▪ Beispiel: der Auftragsstatus wird farblich gekennzeichet,
sowohl Zellen als auch Zeilen
▪ 04-­‐Conditional-­‐Formatting/conditional-­‐
formatting.jrxml
Demo: Bedingte
Formatierung
► 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
Oracle Reports to JasperReports
26.06.2012
Page 26
JasperReports
::Use Case #: Berichtstrigger
► Berichtstrigger
▪ Beispiel: Zu Beginn des Berichtes DML oder DDL Statements
absetzen
▪ 05-­‐Report-­‐Trigger/report-­‐trigger.jrxml
Demo: Report-trigger
► 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
Oracle Reports to JasperReports
26.06.2012
Page 27
JasperReports
::Use Case #: User Exits
► 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
Oracle Reports to JasperReports
26.06.2012
Page 28
JasperReports
::Use Case #: Modularisierung / Wiederverwendbarkeit
► 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.
Oracle Reports to JasperReports
26.06.2012
Page 29
JasperReports
::Use Case #: Internationalisierung
► 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
Demo:
internationalization
► 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
Oracle Reports to JasperReports
26.06.2012
Page 30
JasperReports
::Use Case #: Abfragen basierend auf einem Refcursor
► 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-procedurein.html
▪ http://michakurt.blogspot.de/2010/02/how-to-integrate-jasperserverand.html
Oracle Reports to JasperReports
26.06.2012
Page 31
JasperReports
::Use Case #: Abfragen basierend auf einem Refcursor
► 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!
Oracle Reports to JasperReports
26.06.2012
Page 32
Integration mit Oracle APEX
► JasperReportsIntegration – kostenlose Integration mit APEX
▪ http://www.opal-consulting.de/tools
▪ http://www.opal-consulting.de/forums
Oracle Reports to JasperReports
26.06.2012
Page 33
Integration mit Oracle APEX
::Architektur
► 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
Oracle Reports to JasperReports
26.06.2012
Page 34
Integration mit Oracle APEX
::Getting started
► 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&paramet
er1=1&parameter2=2
► Tipp:
▪ Die Besten Fehlermeldungen erhält man bei der Ausgabe im HTML
Format
Oracle Reports to JasperReports
26.06.2012
Page 35
Integration mit Oracle APEX
::Getting started
► Die Beispiel-Applikation (im Download
enthalten)
▪ src/apex/
f860_JasperIntegrationTest_1.1.0.0.sql
▪ Einfache Tests der installierten Software
▪ Report testing tool
► Demo der API Aufrufe:
▪ Show report
▪ Get report as BLOB
Oracle Reports to JasperReports
26.06.2012
Page 36
Integration mit Oracle APEX
::Getting started
► Schritt für Schritt Anleitung zur Integration in die Beispiel-Applikation:
▪ http://www.opal-consulting.de/downloads/free_tools/
JasperReportsIntegration/Opal-Consulting-JasperReportsIntegration.pdf
Oracle Reports to JasperReports
26.06.2012
Page 37
Fazit
► 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.
Oracle Reports to JasperReports
26.06.2012
Page 38
Q&A
Q&A
Dietmar Aust
Opal-Consulting, Köln
www.opal-consulting.de
daust.blogspot.com
[email protected]
Oracle Reports to JasperReports
26.06.2012
Page 39
Backup – zus. Folien
Backup-Folien
Bei Bedarf
Oracle Reports to JasperReports
26.06.2012
Page 40
Warum?
::Ablösung von Oracle Forms und Reports?
► 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
Oracle Reports to JasperReports
26.06.2012
Page 41
JasperReports
::Lizensierung
► 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
Oracle Reports to JasperReports
26.06.2012
Page 42
Integration mit Oracle APEX
::Security - Authorization
► 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.
Oracle Reports to JasperReports
26.06.2012
Page 43