21. Deutsche Oracle Anwenderkonferenz PDF Erstellung mit APEX - eine kostenlose Alternative Dietmar Aust Opal-Consulting, Köln 1.
Download
Report
Transcript 21. Deutsche Oracle Anwenderkonferenz PDF Erstellung mit APEX - eine kostenlose Alternative Dietmar Aust Opal-Consulting, Köln 1.
21. Deutsche Oracle Anwenderkonferenz
PDF Erstellung mit APEX - eine kostenlose
Alternative
Dietmar Aust
Opal-Consulting, Köln
1. Dezember 2008
Agenda
Vorstellung Opal-Consulting
PDF-Erstellung mit APEX
Berichterstellung mit JasperReports
Integration als externer Bericht
Integration über XML Feed
Fazit
PDF Erstellung mit APEX
Dietmar Aust
Seite 1
Vorstellung Opal-Consulting
Dipl.-Inform. Dietmar Aust, Freelance Consultant
1997-2000: Consultant bei der Oracle Deutschland GmbH /
Düsseldorf
Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Forms,
PL/SQL, PLSQL Web Toolkit (OWA)
Seit 09/2000: Freiberuflich
Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Application
Express, Oracle Express Edition
Seit Nov. 2005 ausschließlich APEX Entwicklung
Aktivitäten
http://daust.blogspot.com/
http://forums.oracle.com/forums/forum.jspa?forumID=137 (APEX)
http://forums.oracle.com/forums/forum.jspa?forumID=251 (XE)
PDF Erstellung mit APEX
Dietmar Aust
Seite 2
PDF–Erstellung mit APEX
Die Problemstellung
Wozu PDF Berichte?
Druckfähig / pixelperfektes Layout
Standard – Berichtswesen
Formulare, Rechnungen, Angebote
Möglichkeiten der PDF – Erstellung mit APEX
Unterstützung seit 3.0
Standard Support
− Apache FOP (nur PDF)
− Cocoon (PDF und RTF)
Erweiterter Support
− Erfordert den BI-Publisher von Oracle !
Custom Solutions
− Beliebige Reporting Engine anbinden (URL-interface)
− Z.B. Oracle Reports, Crystal Reports, JasperReports, BIRT, etc…
PDF Erstellung mit APEX
Dietmar Aust
Seite 3
PDF–Erstellung mit APEX
Standard-Integration - Berichtsregion
Client
Apache /
mod_plsql
1
Alternativen
APEX
1. XSL/FO Transformation mit FOP (nur PDF)
2. Cocoon (PDF + RTF)
2
Definition:
Auf dem Bericht
J2EE / Tomcat
Eigene Berichtslayouts mit
XSLT spezifizieren
PDF Erstellung mit APEX
Dietmar Aust
Seite 4
PDF–Erstellung mit APEX
Standard-Integration
Apache /
mod_plsql
Ablauf
1
APEX
1: Link ruft APEX Funktion auf
Client
2: APEX ermittelt XSL des Layouts
und das XML des Berichts
3: APEX macht Post an J2EE
Server, übermittelt die
Berichtsdefinition zusammen mit den Daten
PDF Erstellung mit APEX
Dietmar Aust
Seite 5
2
J2EE / Tomcat
PDF–Erstellung mit APEX
Erweiterte Integration mit dem BI-Publisher
Optionen
Berichtsabfragen definieren (Alle Items der Applikation, multiple
Abfragen integrieren)
Eigene Berichtslayouts mit MS Word gestalten
Ausgabe in RTF und Excel
Was bedeutet das?
Lizenz für den BI-Publisher
Sehr mächtige Integration
Langfristig evtl. Option, insbesondere wenn die Fachabteilungen
viele Berichte in Word / Excel haben
Einbindung von Power Usern
Installation
http://www.oracle.com/technology/products/database/application_
express/html/configure_printing.html
PDF Erstellung mit APEX
Dietmar Aust
Seite 6
PDF–Erstellung mit APEX
Konfiguration: /pls/apex/apex_admin (Instanz-Administration)
Home>Service verwalten>Instance-Einstellungen
PDF Erstellung mit APEX
Dietmar Aust
Seite 7
PDF–Erstellung mit APEX
Custom Integration
Apache /
mod_plsql
Beliebige Reporting Engines
JasperReports
Client
Oracle Reports
… beliebige, die aufgerufen werden über:
1
APEX
2
3
− URL
− Betriebssystem-Aufrufe
− … (external procedure calls)
J2EE / Tomcat
Berichtsdefinitionen
Daten aus Oracle mit JDBC
http-Tunnel für beliebige Dateien
Wie? Tunnel mit utl_http, Berücksichtigung des MimeTypes
Wozu? => Security (nur wenige Ports) und Autorisierung (wer darf
was)?
PDF Erstellung mit APEX
Dietmar Aust
Seite 8
JasperReports
Übersicht
JasperReports
sehr beliebte Reporting Engine
Java Bibliothek, um Reporting in Applikationen zu integrieren
Standard im JBOSS
Viele Projekte und große Kunden setzen es ein
Berichtsdefinitionen in XML
Funktionalitäten
Datenquellen : JDBC, XML, OLAP, TEXT, …
Ausgabeformate: PDF, XLS, HTML, CSV, TEXT, RTF, ODF
Matrixberichte
Multiple Datenquellen pro Bericht
Berichtstrigger
Unterberichte
Bedingte Formatierung
Fonts, Unicode, NLS
…
PDF Erstellung mit APEX
Dietmar Aust
Seite 9
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 10
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 11
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 12
JasperReports
Berichtsdesign mit dem iReport Designer
iReport Designer
Graphischer Editor, um XML – Berichtsdefinitionen für
JasperReports zu erstellen
Aktuell zwei Versionen, klassisch und Netbeans
Download des iReport Designers
http://ireport.sourceforge.net/
PDF Erstellung mit APEX
Dietmar Aust
Seite 13
JasperReports
Berichtsdesign mit dem iReport Designer
PDF Erstellung mit APEX
Dietmar Aust
Seite 14
JasperReports
Berichtsdesign mit dem Report Designer
Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 15
Integration I – externe Berichte
http Tunnel
Berichtsdefinition in J2EE Applikation
Aufruf aus APEX:
Url für OnDemand Prozess
f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=prc_show_url:::F_TMP_1:
&F_TMP_1.
OnDemand Prozess prc_show_url
declare
l_base_url varchar2(2000) :=
'http://localhost:8080/jasperIntegration/report?_repName=Departments';
begin
xlib_http_pck.display_url_raw(p_url => l_base_url || '&p_deptno=' ||
v('F_TMP_1'));
exception
when others then
htp.p(sqlerrm);
end;
PDF Erstellung mit APEX
Dietmar Aust
Seite 16
Integration I – externe Berichte
http Tunnel
Implementierung des http Tunnels
BEGIN
l_http_request := UTL_HTTP.begin_request (p_url);
DBMS_LOB.createtemporary (l_blob, FALSE);
BEGIN
LOOP
UTL_HTTP.read_raw (l_http_response, l_raw, l_buffer_size);
DBMS_LOB.writeappend (l_blob, UTL_RAW.LENGTH (l_raw), l_raw);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body
THEN
UTL_HTTP.end_response (l_http_response);
END;
HTP.p ('Content-length: ' || DBMS_LOB.getlength (l_blob));
OWA_UTIL.http_header_close;
WPG_DOCLOAD.download_file (l_blob);
DBMS_LOB.freetemporary (l_blob);
END;
PDF Erstellung mit APEX
Dietmar Aust
Seite 17
Integration I – externe Berichte
J2EE / Servlet
Implementierung des Servlets
ds = (DataSource) initContext.lookup("java:comp/env/jdbc/"
+ dataSource);
conn = ds.getConnection();
jasperPrint = JasperFillManager.fillReport(reportFileName
+ ".jasper", reportParams, conn);
ServletOutputStream out = response.getOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();
PDF Erstellung mit APEX
Dietmar Aust
Seite 18
Integration I – externe Berichte
Demo der Integration und der vereinfachten API
Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 19
Integration II – XML Feed
Übersicht
„echter“ Ersatz des BI-Publishers
Kommunikation APEX BI-Publisher:
XML – Feed der Daten
Berichtsdefinition als RTF-Template
BI-Publisher werden die Daten mit dem Template verbunden
und im gewünschten Format zurückgeliefert
PDF Erstellung mit APEX
Dietmar Aust
Seite 20
Integration II – XML Feed
Umsetzung
Berichtsabfrage erstellen
XML exportieren
Berichtslayout mit JasperReports erstellen
Berichtslayout hochladen (.jrxml)
Berichtslayout auf der Region festlegen
J2EE Applikation:
Berichtsdefinition kompilieren (.jrxml => .jasper)
Bericht befüllen (XML an JasperReports übergeben)
Ergebnis zurückliefern
PDF Erstellung mit APEX
Dietmar Aust
Seite 21
Integration II – XML Feed
Demo
Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 22
Fazit
Bloß nicht programmieren !!! (z.B. PL/PDF)
JasperReports: kostenlos, stabil, performant und flexibel (API)
iReport Designer: kostenlos, intuitiv, mächtig und nicht
kompliziert
Integration in APEX ist einfach und sicher umzusetzen
Java Servlet Programmierung notwendig
RTF Export nicht optimal
Textfelder / Positionsrahmen nicht einfach zu editieren
Keine Ränder im Dokument
PDF Erstellung mit APEX
Dietmar Aust
Seite 23
APEX Training - Ankündigung
Oracle APEX: Knowhow aus der Praxis!
23.03 – 25.03.2009 in Bensheim
http://www.opal-consulting.de/training
Dozenten:
− Patrick Wolf (APEX Entwickler des Jahres 2007; Oracle ACE
Director)
− Denes Kubicek (APEX Entwickler des Jahres 2008; Oracle ACE)
− Dietmar Aust
Praxisrelevant!
Lessons learned von vielen APEX Projekten
Hands-On Sessions
PDF Erstellung mit APEX
Dietmar Aust
Seite 24
Kontakt
Opal-Consulting Dietmar Aust
Web: http://www.opal-consulting.de
Blog: http://daust.blogspot.com/
E-Mail: [email protected]
PDF Erstellung mit APEX
Dietmar Aust
Seite 25