+ All Categories
Transcript
Page 1: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 1

ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB

Dipl.-Inform. Jens Rettig

[email protected]

http://www.eseis.de

Page 2: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 2

Agenda

• Vorstellung• Reports und XML• Reports in der J2EE-Welt• XML DB – Speicherung • Reports-Zugriff mit SQL und XPath• Kopplung von XML-Daten in XML-DB

mit „Event Driven Publishing“ in Reports• Probleme• Fazit

Page 3: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 3

ESEIS GmbH

• Evolutionäre Softwareentwicklung individueller Systeme GmbH

• Gründung in 04/2002• Im vierten Geschäftsjahr erfolgreich „am Markt“• Ziele

– Investitionssicherung bei Partnern durch Weiterentwicklung bestehender Systeme

– Umfassende IT-Beratung – Unterstützung bei allen Tätigkeiten im SE-Bereich

• Kompetenzen– Oracle-Know-How von 4.5-10g– Alle Phasen der Softwareentwicklung auf vielen Plattformen

Page 4: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 4

Portfolio und Kunden

• Kompetente Beratung bei der Planung und Umsetzung von IT-Strategien für betriebliche Informationssysteme, insbesondere

- der Einführung neuer Technologien und

- der Migration von Systemen

- der Weiterentwicklung von bestehenden Systemen

• Systementwicklung von unternehmensweiten Anwendungen mit modernem Software Engineering und Qualitätsmanagement

Die ESEIS GmbH bietet von der Projektleitung bis zur Einführung Aufgaben aus der gesamten Palette des Software Engineering !

Interessiert ?Hier könnte Ihr Logo stehenFür weitere Informationen :

http://www.eseis.de

Page 5: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 5

• DTD– Document Type Definition– Definition von Typen/“Sorten“ von XML-Dateien

• XML-Schema– W3C XML Schema– <xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“/>– Nutzung von XML zur Beschreibung von XML

• xs:element• xs:string• xs:simpleType• xs:complexType• …

• Für weitere Informationen s. Literatur

XML-Grundbegriffe: Schemata

Page 6: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 6

• Reports verarbeitet XML-Dateien als Input „out of the box“– …aber das „kleingedruckte“…

Reports und XML

The XML PDS implementation supports only two-dimensional listing of records.Oracle Reports expects the XML data file to be in simple table format with rowsand columns. Oracle Reports iterates through the XML sequence at one levelbelow the topmost element in the XML. If there are sequences at lower levels(nested elements), they are not handled. Thus, to generate a tabular report, youmust "flatten" your XML file into simple row-column format, as shown in thefollowing examples.(aus : „Oracle® Reports - Building Reports - 10g Release 2 (10.1.2) - B13895-01 July 2005“, S. 720 von 796)

Nur für zwei-dimensionale Daten !!!

– nur nutzbar, wenn dies ausreicht…– oder XML-Transformation erforderlich

Page 7: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 7

– Reports liest• XML-Datei• und zugehörige XML-Schema/DTD-Datei

– Daten werden als Abfrage in separater Gruppe im Reports Datenschema dargestellt

– Zwei-Dimensionale Daten durch „Platt-klopfen“

Reports und XML: Beispiel

Page 8: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 8

– Steuerung von Reports mit Hilfe von in XML-Dateien gespeicherten Informationen

– XML-Schema-Auszug– Burst-Distribution

• Teilergebnisse separat verteilen(mit foreach)

• Report-Variablen zur Verteilung nutzen• (z. B. als Mail-Empfänger, Dateiname)

– Detaillierte Erklärung im JDeveloper– Steuerung mit Daten speichern !?

XML in Reports: Distribution.xml

Page 9: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 9

– Aufruf von Reports • direkt aus der Browser-Session des Clients• Rückgabe des Ergebnisses an den Browser

– Verschiedene Ausgabeformate• XML• PDF• (Excel-)Spreadsheet

– Verschiedene Ausgabeziele• Per FTP, Mail, Ausgabe an Drucker

– Auch gleichzeitig per Burst Distribution

Reports in der J2EE-Welt

Page 10: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 10

– Aufruf von Reports • direkt aus der Browser-Session des Clients z.B.:

– http://www.eseis.de/rwservlet:7780/reports/rwservlet?report=Mitarbeiterprofil.rdf&destype=screen&desformat=pdf&desname=my_mitarbeiterprofil.pdf

– Verschiedene Ausgabeformate• XML (desformat=xml)• PDF (s.o.)• Excel-Ausgabe (desformat=spreadsheet)

– Verschiedene Ausgabeziele• Per FTP, Mail, Ausgabe an Drucker

– mit destype, desformat, desname– mit distribute=yes, destination=<datei auf rep_server>

• Auch gleichzeitig per “Burst Distribution”– „One Source“

• nur unterschiedliche Aufruf-Parameter

Reports in der J2EE-Welt: Beispiel

Page 11: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 11

– Reimplementierung von Geschäftslogik ?!? („Doppelter“ SQL-Zugriff in App-Server auf komplexe DB-Objekte)

– PluggableDataSources ?

Probleme in der J2EE-Welt

Datenbank-Server

Application-Server

J2EE-Application Report-Server

Web-Client

z.B. via BC4J SQLNet

Page 12: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 12

– ORACLE Datenbank-Komponente zur effizienten Speicherung und Abfrage von XML-Daten aus ORACLE DB

• Ermöglicht XPath-Ausdrücke in SQL• Registrierung von XML-Schemata vs. Datenbank-

Tabellen (und damit „Prüfungsmöglichkeit“)– Incl. Namespace-Unterstützung

• Speicherung von XML-Daten– (Teil-)Relational durch Eintragung von (xdb-)

Speicherungsanweisungen in XML-Schema– oder (default) Speicherung als CLOB

• „Insert“ von XML-Daten („Dateien“) auch per – FTP oder – HTTP

– Ab Version Oracle 9i verfügbar (mindestens …)

ORACLE XML DB

Page 13: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 13

XML DB: Speicherung und Abfrage

XML DBInsert als Clob Select mit SQL und XPath Reports

XML DBInsert als Clob Select mit SQL Reports

XMLDB

Insert als Clob ReportsSelect mit SQL

(Teil-)relationale Speicherung durch Implementierung von XML-Schema

Abfrage mit „reinem“ SQL durch Definition von relationalen Views mit XPath-Anweisungen

Page 14: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 14

Beispiel: Mitarbeiterprofil

Page 15: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 15

Zugriff mit SQL und XPath I

select extractValue( OBJECT_VALUE –- oder auch value(a) , '/wws:Mitarbeiter/Name' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Mitarbeitername , extractValue( OBJECT_VALUE , '/wws:Mitarbeiter/Geburtsjahr' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Geburtsjahr , extractValue( OBJECT_VALUE , '/wws:Mitarbeiter/Ausbildung' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Ausbildung , extractValue( OBJECT_VALUE , '/wws:Mitarbeiter/Nationalitaet' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Nationalitaet , extractValue( OBJECT_VALUE , '/wws:Mitarbeiter/EDVseit' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) EDVseit , extractValue( OBJECT_VALUE , '/wws:Mitarbeiter/verfügbarAb' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) verfügbarAb from rettig."Mitarbeiter_TAB" a;

Page 16: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 16

Zugriff mit SQL und XPath II

select extractValue( value(a) , '/wws:Mitarbeiter/Name' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Mitarbeitername , extractValue(value(bs) , '/Programmiersprache‚ ) Programmiersprache from rettig."Mitarbeiter_TAB" a , table( XMLSequence( extract(value(a) , '/wws:Mitarbeiter/Programmiersprache' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) ) ) bs;

Page 17: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 17

select extractValue( value(a) , '/wws:Mitarbeiter/Name‚ , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Mitarbeitername , extractValue(value(p) , '/Projekt/Name' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) Projektname , extractValue(value(bs) , '/Programmiersprache' ) Programmiersprache from rettig."Mitarbeiter_TAB" a , table( XMLSequence( extract(value(a) , '/wws:Mitarbeiter/Projekt' , 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"'

) ) ) p , table( XMLSequence( extract(value(p) , '/Projekt/Programmiersprache'

, 'xmlns:wws="http://www.eseis.de/reports/MitarbeiterProfil.xsd"' ) ) ) bs;

Zugriff mit SQL und XPath III

Wichtiger „Kniff“:Extrahieren und verknüpfen von XML-Fragmenten, um relational zusammengehörige Objekte (Master-Detail-Detail) auch zusammengehörig zu selektieren

Page 18: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 18

„Event-Driven Publishing“

XML DB

Insert, FTP, WebDav

Select ReportsEingang Daten

Journal

Trigger

insert into Daten(xmldata)select , extract( OBJECT_VALUE , '/Eingang/Daten‚ ).getclobval() DATENfrom Eingang

v_PList := SRW_PARAMLIST(SRW_PARAMETER('',''));Srw.add_parameter(v_PList,'GATEWAY‚ ,'http://www.eseis.de:7780/reports/rwservlet');Srw.add_parameter(v_PList,'SERVER','rep_druck_queue');Srw.add_parameter(v_PList,'REPORT',p_report_name);Srw.add_parameter(v_PList,'USERID','scott/tiger@eseis_02');Srw.add_parameter(v_PList,'DESTYPE','file');Srw.add_parameter(v_PList,'DESNAME‚ ,'/home/oracle/jret_test/drucken/testoutput.pdf');v_ident := Srw.run_report(v_PList);

Page 19: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 19

Probleme

• Distribution-XML muss als Datei auf dem Report-Server vorliegen– Für „Event-Driven Publishing“ (vom DB-

Server aus) eher lästig, da Schicht-übergreifender Datei-Zugriff realisiert werden muss.

• Distribution (derzeit !?!) nicht mit allen Ausgabeformaten möglich– Spreadsheet (Excel)– XML

Page 20: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 20

Fazit

• Praxisrelevantes Beispiel ?– Prototyp beim Kunden realisiert– Erweiterung um

• weitere Reports • und größere Datenmengen steht an

• Vielleicht zur DOAG-Jahrestagung '06:– Darstellung der (weiteren) Erfahrungen– Performance Aussagen

• Erste kleine Tests mit guter Performance• Große Dateien ?

– Weitere Konzepte: • Monitoring-Komponente• mit Wiederanlauf-Mechanismen

Page 21: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 21

Fazit II

– Reports Pluggable Data Sources• Faszinierende Variante, „beliebige“

Datenquellen mit Reports zu koppeln• Java-API• Aber aufgrund der Mächtigkeit auch komplex• Eher ein „eigenes Projekt“ als schnelle Lösung

– Pluggable Report Destinations• Auch für Ausgabeziele können Java-Klassen

gebaut werden…

Page 22: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 22

Literatur

– Ray, E.T.: Einführung in XML, O‘Reilly– Harold, E.R., Means, W.S.: XML in a

Nutshell, O‘Reilly– v.d.Vlist, E.: XML-Schema, O‘Reilly– Schardina, M., Chang, B., Wang, J.:

XML&SQL:Design, Build&Manage XML Applications in Java, C,C++ & PL/SQL, Oracle Press

– Online Dokumentation von Oracle XML-DB und Oracle Reports (!!!)

– http://www.otn.oracle.com

Page 23: 2006-03-30, Jens Rettig1 ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB Dipl.-Inform. Jens Rettig jens.rettig@eseis.de .

2006-03-30, Jens Rettig 23

ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB

Dipl.-Inform. Jens Rettig

[email protected]

http://www.eseis.de


Top Related