2006-03-30, jens rettig1 oracle reports 10g im j2ee-umfeld: reports und xml db dipl.-inform. jens...
Post on 06-Apr-2015
109 Views
Preview:
TRANSCRIPT
2006-03-30, Jens Rettig 1
ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB
Dipl.-Inform. Jens Rettig
jens.rettig@eseis.de
http://www.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
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
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
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
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
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
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
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
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
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
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
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
2006-03-30, Jens Rettig 14
Beispiel: Mitarbeiterprofil
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;
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;
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
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);
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
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
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…
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
2006-03-30, Jens Rettig 23
ORACLE Reports 10g im J2EE-Umfeld: Reports und XML DB
Dipl.-Inform. Jens Rettig
jens.rettig@eseis.de
http://www.eseis.de
top related