Einsatz von Java für komfortables OWB Scripting zur Qualitätssicherung und Effizienzsteigerung Reinhard Mense ARETO Consulting GmbH Bergisch Gladbach Schlüsselworte: Oracle Warehouse Builder, OWB Scripting, OWB Java API, OMB Plus, OWB Experts, Projektstandards, Qualitätssicherung Einleitung In Zeiten knapper werdender Budgets ist eine effiziente Entwicklung von Data WarehouseSystemen von hoher Bedeutung. OWB Scripting kann bei Routine-Tätigkeiten, wie z. B. der Durchführung von Massenupdates im Design-Repository oder dem Deployment, die Effizienz der Entwicklung mit dem Oracle Warehouse Builder (OWB) steigern. Ein umfassender Einsatz des OWB Scripting erweist sich jedoch oft als aufwendig und umständlich, so dass es sinnvoll ist, Optimierungsansätze zu verfolgen. Im Folgenden wird gezeigt, wie durch die Verwendung der Java API des OWB das OWB Scripting deutlich komfortabler gestaltet werden kann. Bevor die technischen Details beschrieben werden, soll der Nutzen am praktischen Einsatz bei einem Kunden erläutert werden. Im letzten Abschnitt dieses Manuskripts werden weitere Einsatzmöglichkeiten aufgezeigt. Einsatz in der Praxis Ein Kunde aus dem Verlagswesen betreibt ein Data Warehouse (DWH) für die Auswertung von Zugriffen auf Online-Shops und Online-Portalen und registrierte eine zunehmende Laufzeit des ETL-Prozesses. Es bestand die Gefahr, dass das zur Verfügung stehende Zeitfenster für die Beladung des DWH nicht mehr ausreicht. Ein Review des Systems zeigte, dass die nächtlich zu verarbeitenden Datenmenge die ursprünglichen Erwartungen übersteigt und die ETL-Prozesse für die Verarbeitung dieser Datenmengen nicht mehr geeignet sind. Als Hauptursache für die stetige Verlangsamung der ETL-Prozesse wurde festgestellt, dass die ca. 40 Fakttabellen nicht partitioniert waren. Damit die Partitionierung der Fakttabellen effektiv genutzt werden konnte, mussten auch die zugehörigen ca. 40 Mappings angepasst werden. Der Aufwand für eine manuelle Änderung wurde auf eine Stunde pro Mapping und Tabelle geschätzt. Zusätzlich wäre bei einer manuellen Änderung jedes einzelne Mapping explizit zu testen. Dieser Testaufwand wurde im Schnitt mit ebenfalls einer Stunde beziffert. Somit ergab sich ein geschätzter Gesamtaufwand von 80 Stunden, also etwa zehn Arbeitstagen. Mit Hilfe eines für die Durchführung von Massenupdates und die Erzeugung von OMB Skripten bereits entwickelten Java Programms, konnten die notwendigen Änderungen größtenteils automatisiert durchgeführt werden. Der Aufwand wurde somit erheblich reduziert. Statt der kalkulierten zehn Tage, wurden insgesamt nur zwei Tage für die Umstellung benötigt. Der Aufwand für die Durchführung der Änderungen wurde auf einen Tag reduziert. Der Testaufwand konnte durch die Automatisierung ebenfalls deutlich, auf nur einen Tag, reduziert werden. Der drohende Engpass bei der nächtlichen Beladung wurde somit rechtzeitig vermieden. OWB Scripting mit OMB Plus und OWB Experts OWB Scripting ermöglicht das Lesen und Verändern der Objekte im OWB Repository mit Hilfe der Skript-Sprache OMB Plus. OMB Plus ist eine Erweiterung der Programmiersprache Tcl, deren Syntax zwar simpel ist, aber auch häufig als ungewöhnlich empfunden wird. OMB Plus erweitert Tcl um OMB-Befehle (B steht hier für Batch) die den Zugriff auf das OWB Repository ermöglichen. Neben den OMB-Befehlen stellt OMB Plus auch noch OMU-Befehle (U steht hier für User Interface) zur Verfügung. Mit Hilfe der OMU-Befehle können Dialog-Komponenten des OWB Client für einzelne OWB Objekte aufgerufen werden. So kann z. B. für eine bestimmte Tabelle der Editor (OMUALTER TABLE) oder der Property-Dialog (OMUPROPERTIES TABLE) aufgerufen werden. Da es sich bei den Dialogen um die Standarddialoge des OWB Client handelt, können diese nicht den Bedürfnissen angepasst werden und sind somit nicht für die Verarbeitung von Massenupdates geeignet. Die Ausführung der OMB Plus Skripte kann auf zwei Wegen geschehen: in der OMB Plus Konsole und innerhalb von OWB Experts. OWB Experts ermöglichen den kontextsensitiven Aufruf von OMB Plus Skripten direkt aus dem OWB Client. So kann beispielsweise ein Skript für eine bestimmte Tabelle oder ein bestimmtes Mapping aufgerufen werden. OWB Experts erlauben mit der UI-Komponente "Custom Dialog" eigene Dialoge zu erstellen, so dass man nicht nur auf die Standarddialoge des OWB Client beschränkt ist. Die Möglichkeiten der "Custom Dialoge" sind jedoch stark eingeschränkt und damit eher für einfache Dialoge geeignet. Tabellarische Darstellungen oder Menüs sind dabei nicht möglich. Bei Auswahl eines Buttons wird außerdem der "Custom Dialog" stets geschlossen, so dass geschachtelte Dialoge nicht erstellt werden können. Abb. 1:Nachteile und Grenzen von OMB Plus Skripten und OWB Experts Aufgrund dieser Restriktionen sind OMB Plus Skripte und OWB Experts ohne Nutzung der Java API nur bedingt geeignet für die Entwicklung komplexer und komfortabler GUIOberflächen. Mit der Bereitstellung der Java API des OWB hat Oracle eine Möglichkeit geschaffen, die Nachteile und Restriktionen aufzuheben. Java API des OWB Durch die Nutzung der Java API des OWB können die Möglichkeiten von Java ausgeschöpft und so komplexe und komfortable GUI-Oberflächen für den Zugriff auf das OWB Repository erstellt werden. Der OWB nutzt eine große Zahl von JAR-Dateien und stellt mit ihnen eine Vielzahl von Klassen und Methoden für den Zugriff auf das OWB Repository zur Verfügung. Der Zugriff kann über zwei Wege erfolgen: der indirekte Zugriff per OMB Plus-Skript und der direkte Zugriff. Im Folgenden werden die beiden Zugriffsarten erläutert und die wichtigsten Klassen und Methoden exemplarisch vorgestellt. Indirekter Zugriff auf das OWB Repository per OMB Plus-Skripte Beim indirekten Zugriff auf das OWB Repository wird mit Java ein OMB Plus Skript erzeugt. Das erzeugte OMB Skript wird an eine Instanz der Klasse OMBEngine übergeben (Abbildung 2) und von dieser mit der Methode executeStr ausgeführt. Die Verbindung zum OWB Repository muss dabei vom erzeugten OMB Plus Skript hergestellt werden. Abb. 2: Indirekter Zugriff mit Java auf das OWB Repository per OMP Plus-Skript Der in Abbildung 3 dargestellte Programmcode, ermittelt z. B. alle Property-Namen für Tabellen im OWB-Repository. Abb. 3: Beispiel-Code für die Ausführung eines OMB Plus-Skripts mit Java Direkter Zugriff auf das OWB Repository Beim direkten Zugriff auf das OWB Repository wird für die Kommunikation mit dem OWB Repository eine Instanz der Klasse RepositoryManager verwendet (Abbildung 4). Damit der Repository Manager auf das OWB Repository zugreifen kann, muss für diesen zunächst mit der Methode openConnection eine Verbindung zum Repository hergestellt und anschließend mit der Methode setWorkingProject das gewünschte Projekt ausgewählt werden. Abb. 4: Direkter Zugriff mit Java auf das OWB Repository Abb. 5: Beispiel-Code für den Aufbau der Verbindung zum OWB Repository und die Festlegung des OWB Projekts Wurde das Projekt ausgewählt, kann mit den Klassen und Methoden der OWB Java API auf alle Objekte des Projekts zugegriffen werden. Die beiden folgenden Abbildungen zeigen exemplarisch die Funktionsweise für das Auslesen von Objektdaten (Abbildung 6) und das Ändern von Eigenschaften einer Tabelle (Abbildung 7). Abb. 6: Beispiel-Code für das Auslesen von Objektdaten Abb. 7: Beispiel-Code für das Ändern von Eigenschaften einer Tabelle Integration in den OWB Client OMB Plus Skripte und OWB Experts können direkt im OWB Client ausgeführt werden. Um ein erstelltes Java-Programm ebenfalls direkt im OWB Client auszuführen, ist es innerhalb eines OWB Experts aufzurufen. Dies geschieht über ein Java Task, der im OWB Expert eingefügt wird, wobei das erstellte Java-Programm als JAR-Datei vorliegen muss. Name und Speicherort der JAR-Datei werden dem Java Task im Parameter CLASS_URL mitgeteilt. Die Methode, die gestartet werden soll, wird mit Hilfe der Parameter CLASS_NAME und METHOD_NAME angegeben. Außerdem können mit Hilfe der ARGUMENT_LIST zusätzliche Parameter an die aufzurufende Methode übergeben werden. Die Parameter können genutzt werden, um z. B. den aktuellen Kontext, von dem der OWB Expert aufgerufen wurde, an das Java-Programm weiterzugeben. Somit wird es möglich, neben kontextbezogenen OWB Experts auch kontextbezogene Java-Programme zu erstellen. Einsatzmöglichkeiten Der Einsatz der Java API beim OWB Scripting, erlaubt die Erstellung komplexer und komfortabler Oberflächen. Zudem wird das OWB Scripting flexibler und die Nutzung erleichtert, so dass auch Entwickler ohne OMB Plus-Kenntnisse die Vorteile nutzen können. Massenupdates/Massenkonfiguration OWB Scripting ist ideal für die Durchführung von Massenupdates geeignet. In vielen Projekten werden kleine OMB Plus Skripte für diesen Zweck entwickelt. Diese werden jedoch oft speziell für eine konkrete Problemstellung erstellt und sind deshalb nicht flexibel einsetzbar. So entsteht nicht selten eine undurchschaubare Ansammlung von Skripten, deren Wiederverwendbarkeit eingeschränkt ist. Wird die Funktionalität dieser Skripte stattdessen mit einer benutzerfreundlichen Oberfläche allen Entwicklern zur Verfügung gestellt, kann die Effizienz bei der Entwicklung von DWHSystemen gesteigert werden. Abbildung 8 zeigt als Beispiel eine solche Oberfläche, wie sie beim Kunden zum Einsatz kam. Abb. 8: Beispiel für ein Java-Programm für die Massenupdate-Funktion Durchsetzung von Projektstandards und Qualitätssicherung In jedem Projekt ist es sinnvoll Projektstandards zu definieren. So können z. B. für die jeweiligen OWB-Objekttypen (Tabellen, Mappings, etc.), abhängig vom Modul, oder Objektnamen Konfigurationsparameter festgelegt werden. In Verbindung mit einer einfach zu nutzenden Massenupdate-Funktionalität, können diese effektiv durchgesetzt werden. Z. B. kann auf Knopfdruck ein Abgleich der aktuellen Property-Werte mit den gemäß Projektstandard empfohlenen Werten stattfinden. Vom Standard abweichende Werte können hervorgehoben und auf Wunsch automatisch angepasst werden. Die Qualitätssicherung wird wesentlich erleichtert. Werden die erstellten Java-Programme mit Hilfe der OWB Experts kontextbezogen aufgerufen, kann schon beim Erstellen eines Objekts im OWB durch Aufrufen des entsprechenden OWB Experts die Konfiguration des Objekts automatisch vorgenommen werden. Auf diesem Weg wird die Einhaltung der Projektstandards sichergestellt. Mit OWB 11g Release 2 können OWB Experts auch innerhalb des Mapping Editors aufgerufen werden, so dass Projektstandards auch für die einzelnen Operatoren eines Mappings definiert werden können. In neuen Projekten kann von Beginn an die Einhaltung von Projektstandards erreicht werden. Bei bestehenden Projekten kann die Qualitätssicherung unterstützt oder ein Projekt-Review vereinfacht werden. Ausblick Ein weiteres Einsatzszenario könnte die automatische Erzeugung von Mappings auf Basis von Mapping Templates sein. Denkbar ist auch die Erstellung einer komfortablen Oberfläche für die Generierung von OMB Skripten für den Transport und das Deployment von OWB Objekten in unterschiedliche Systemumgebungen. Kontaktadresse: Reinhard Mense ARETO Consulting GmbH Friedrich Ebert Straße 8 D-51429 Bergisch Gladbach Telefon: Fax: E-Mail Internet: +49(0)2204-300878 +49(0)2204-300879 [email protected] www.areto-consulting.de