Oracle BI Publisher Webservice API in Action Marco Fischer
Agenda Firmenvorstellung Einführung Oracle BI Publisher Webservice API WSDL-Beispiel Security Nutzung der BI Publisher Webservices soapui APEX PL/SQL Projektbeispiel Fazit
Zahlen und Fakten Robotron Datenbank-Software GmbH Gründungsjahr 1990 Mitarbeiterzahl 326 (Stand 03/2014) Stammkapital Umsatz 2012 Geschäftssitz 2,4 Mio. EUR 31,1 Mio. EUR Stuttgarter Str. 29 01189 Dresden Oracle-Partner ISO 9001 zertifiziert
Robotron-Firmengruppe Tschechien: Robotron Database Solutions s.r.o. Schweiz: Robotron Schweiz GmbH Österreich: Robotron Austria GmbH Russland: Robotron Rus GmbH Deutschland, mit ECG Erdgas-Consult GmbH: Robotron ECG solutions GmbH
Einführung Webservices: plattform-, programmiersprachen- und protokollunabhängig präzise beschrieben, modular, granular, zusammensetzbar XML-basierte Beschreibung zur Charakterisierung des Webservice (WSDL) Beschreibung Schnittstelle und Datentypen Protokoll zum Austausch XML-basierter Nachrichten (SOAP) Möglichkeit für Anwendungen, eine API zur Verfügung zu stellen Bildquelle: www.rittmanmead.com
Oracle BI Publisher Webservice API Methoden, um mit BI Publisher Berichtsobjekten zu interagieren, z.b. Berichte auszuführen, Informationen über Berichte abzufragen, Berichte zu definieren und zu ändern, Berichtstemplates hochzuladen http://<host>:<port>/xmlpserver/services/v2/reportservice?wsdl Methoden, um BI Publisher Scheduler-Aufgaben auszuführen, z.b. Berichtsjobs zu definieren und zeitlich zu planen, Berichte abzufragen, Berichtsjobhistorie zu verwalten http://<host>:<port>/xmlpserver/services/v2/scheduleservice?wsdl Methoden, um BI Publisher Katalogobjekte zu verwalten (Erstellen, Kopieren, Hochladen, Herunterladen und Löschen), z.b. von Ordnern, Berichten, Datenmodellen und Templates http://<host>:<port>/xmlpserver/services/v2/catalogservice?wsdl Methoden, um Sicherheitsaufgaben durchzuführen, z.b. Authentifizierung (login, logout) und Kontenmanagement http://<host>:<port>/xmlpserver/services/v2/securityservice?wsdl Bildquelle: www.rittmanmead.com Developer's Guide for Oracle Business Intelligence Publisher: http://docs.oracle.com/cd/e21764_01/bi.1111/e18863/toc.htm
WSDL-Beispiel
Security Session-Based Webservices Aufruf der Webservice-Methode SecurityService.login(), um Nutzer zu authentifizieren Response ist entweder eine AccessDeniedException oder bei erfolgreichem Login eine loginresponse-nachricht mit loginreturn-token allen anschließenden Webservice-Methoden mit dem Suffix [...]InSession wird dieser Token als Teil des Aufrufes mitgegeben nützlich für Anwendungsfälle, in dem mehrere Webservice-Aufrufe erfolgen und der Nutzerkontext erhalten bleiben soll Stateless Webservice in jedem Webservice-Aufruf werden Nutzername und Passwort mitgegeben geeignet für einzelne Webservice-Aufrufe, zum Beispiel in SOA-Prozessen
Nutzung der BI Publisher Webservices soapui freies Werkzeug zum Softwaretest für SOAP Oracle Application Express PL/SQL unter Verwendung von FLEX_WS_API Projektbeispiel Java Web Service Proxy BPEL http://www.rittmanmead.com/2011/11/accessing-bi-publisher-11gweb-services-through-a-jdeveloper-web-service-proxy/ http://www.rittmanmead.com/2011/11/calling-bi-publisher-11g-webservices-from-bpel/
soapui
soapui
soapui
soapui
Oracle Application Express
Oracle Application Express
Oracle Application Express
Oracle Application Express
Oracle Application Express Bildquelle: Oracle
PL/SQL unter Verwendung von FLEX_WS_API FLEX_WS_API: freies PL/SQL-Package http://jastraub.blogspot.de/2008/06/flexible-web-service-api.html Mittlerweile als APEX_WEB_SERVICE-Package verfügbar mit selber Funktionalität Reines PL/SQL unter Verwendung von UTL_HTTP, während das UTL_DBWS-Package mit ähnlicher Funktionalität ein Wrapper für Java- Code ist SOAP-Envelope muss manuell zusammengestellt werden und wird mit MAKE_REQUEST-Funktion an Webservice gesendet Response ist wiederum ein SOAP-Envelope, der mittels XMLDB- Funktionalitäten geparst werden kann
PL/SQL unter Verwendung von FLEX_WS_API FUNCTION FNC_WS_LOGIN(p_bip_user_id varchar2, p_bip_user_pw varchar2, p_bip_url varchar2) return varchar2 is l_env CLOB; l_xml XMLTYPE; l_parse CLOB; BEGIN l_env := '<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v2="http://xmlns.oracle.com/oxp/service/v2"> <soapenv:header/> <soapenv:body> <v2:login> <v2:userid>' p_bip_user_id '</v2:userid> <v2:password>' p_bip_user_pw '</v2:password> </v2:login> </soapenv:body> </soapenv:envelope>'; l_xml := FLEX_WS_API.MAKE_REQUEST(p_url => p_bip_url, '/services/v2/securityservice', p_envelope => l_env); IF l_xml.existsnode('//faultstring') = 1 THEN raise_application_error(-20001, 'Bei der Anmeldung ist ein Fehler aufgetreten! (Originalfehlermeldung: ' l_xml.extract('//faultstring/text()').getstringval() ')'); end if; l_parse := FLEX_WS_API.PARSE_XML_CLOB(l_xml, '//loginreturn/text()', 'xmlns="http://xmlns.oracle.com/oxp/service/v2"'); return to_char(l_parse); END;
Projektbeispiel APEX-Anwendung zur flexiblen Steuerung der monatlichen Generierung von Zahlungsavisen und deren Druck Monatliche Erzeugung von mehr als 4000 PDF- und Text-Dokumenten APEX-Anwendung zur Eingabe von Parametern sowie Start der Generierung und des Drucks Steuerung des BI Publisher über Webservice API aus Datenbank heraus mittels PL/SQL und FLEX_WS_API Verwendung von: SecurityService.login() ScheduleService.scheduleReportInSession() ScheduleService.getScheduledReportStatusInSession() SecurityService.logout()
Fazit Oracle BI Publisher Webservice API Interessante, stabile und gut dokumentierte Schnittstelle Vielzahl von Methoden, um BI Publisher Funktionen zu automatisieren Einbindung von BI Publisher Funktionen in eigene Anwendungen, unabhängig von der Programmiersprache
Marco Fischer Dipl.-Wirtschaftsinformatiker Leitender Systemberater Certified Business Intelligence Professional Robotron Datenbank-Software GmbH Stuttgarter Straße 29 01189 Dresden Telefon: (0351) 25859 2755 Telefax: (0351) 25859 3699 Mobil: (0151) 15015533 marco.fischer@robotron.de www.robotron.de