iX 6/2017
S. 102
Wissen
Datenbankentwicklung
Aufmacherbild

Oracles Entwicklungsumgebung Application Express

Stilvoll entwickeln

Mit Application Express sollen sich Geschäftsanwendungen rasch und übersichtlich entwickeln lassen. Oracle verbessert in einer neuen Version viele GUI-Komponenten und räumt mit Altlasten beim Rendern von Diagrammen auf.

Oracle legt die frei verfügbare Entwicklungsumgebung Application Express (APEX) mittlerweile seiner Datenbank bei. Die wichtigsten neuen Funktionen der im Dezember 2016 erschienen Version 5.1 sind das Interactive Grid und die neuen Oracle JET Charts (JavaScript Extension Toolkit). Außerdem sind – wie schon in allen Versionen zuvor – viele kleinere neue Funktionen und Detailverbesserungen enthalten.

Eine Anwendung als Datensammlung

Application Express ist selbst eine Datenbankanwendung und benötigt lediglich einen Webserver (Abb. 1).

Die grundlegende Idee von Application Express (APEX) ist, nicht nur die Daten, mit denen eine Unternehmensanwendung arbeitet, sondern auch die Anwendung selbst in der Datenbank zu speichern. APEX ist integraler Bestandteil der Oracle-Datenbank. Daneben ist lediglich ein Webserver nötig, der den Browser des Anwenders mit APEX in der Datenbank verbindet.

Alle Eigenschaften einer Anwendung werden im Datenmodell von APEX gespeichert. Eine Zeile in der Tabelle für „Anwendungen“ repräsentiert demnach eine Anwendung. Fügt man zum Beispiel eine neue Seite hinzu, entsteht eine neue Zeile in der Tabelle, die die Anwendungsseiten speichert. Analog dazu sind weitere Komponenten einer Anwendung modelliert: Eine Seite besteht aus mehreren Regionen und enthält mehrere Prozesse für Geschäftslogik, Formularelemente und so fort. Für alle diese Komponenten gibt es Tabellen im APEX-Datenmodell.

Mit der Komponente Application Builder erstellt oder bearbeitet man Anwendungen, was somit auch die Anwendungsmetadaten verändert. Wird die Anwendung gestartet, generiert die APEX-Engine anhand der Metadaten die Webseiten der Anwendung. APEX bietet für Geschäftsanwendungen typische Standardkomponenten wie (tabellarische) Berichte, Geschäftsgrafiken, Formulare, Kalender und andere. Eine SQL-Abfrage liefert die Daten, die von der Komponente dargestellt oder verarbeitet werden, und Parameter steuern das Verhalten. Sollen zum Beispiel Tabellendaten auf einer Website visualisiert werden, erzeugt man einen Bericht oder ein Diagramm auf Basis einer SQL-Abfrage. Letztere stellt die gewünschten Daten zusammen.

Letztlich verfolgt APEX für Anwendungen eine ähnliche Idee wie die Abfragesprache SQL für Daten: Es wird ausgedrückt, was die Anwendung tun soll – etwa ein Eingabefeld, ein Formular oder einen Bericht darstellen. Diese Eigenschaften werden im Application Builder deklariert und in den APEX-Tabellen gespeichert. Um das Wie, also wie eine Komponente konkret implementiert ist, kümmert sich APEX.

Flexibel bleiben mit SQL-Prozedurlogik

Allerdings kann man nicht alles rein deklarativ abbilden, denn jede Unternehmensanwendung hat besondere Aufgaben, die sich nicht in einem generischen Datenmodell darstellen lassen – vor allem, wenn es um Geschäftslogik geht. Deshalb erlaubt APEX nahezu überall das Hinterlegen prozeduraler Logik in PL/SQL (der Programmiersprache der Oracle-Datenbank). So wird es möglich, mit eingegebenen Formulardaten eine in der Datenbank gespeicherte PL/SQL-Prozedur aufzurufen, was wesentlich mehr Freiheiten erlaubt als das schlichte Ablegen in einer Tabelle.

Listing 1: Qualitätskontrolle einer APEX-Anwendung mit SQL

select page_id,
       page_name,
       item_name,
       item_help_text
  from apex_application_page_items
 where application_id =  4711
   and item_help_text is null;

Besondere Vorteile spielt diese Architektur aus, sobald man die Anwendungsmetadaten praktisch ausnutzt: Wenn jedes Formularelement eine Zeile in einer Tabelle ist, sind die Eigenschaften dieses Formularelements die Tabellenspalten. Die Anwendungsseite, auf der sich das Formularelement befindet, wird per Fremdschlüssel referenziert. Sucht man im Rahmen der Qualitätssicherung nach Formularelementen ohne hinterlegten Hilfetext, wird dies eine reine SQL-Übung. Listing 1 zeigt eine solche Abfrage.

Bessere Formulare mit Interactive Grids

Komponenten wie Formulare oder Berichte gibt es seit der ersten Application-Express-Version 1.5 aus dem Jahr 2004 (damals unter dem Namen HTML DB); andere kamen in den folgenden Versionen dazu. Die neue Version 5.1 bringt mit dem Interactive Grid und den neuen Diagrammen auf Basis von Oracles JavaScript Extension Toolkit (JET) zwei neue Komponententypen mit – wie alle anderen fügen sich auch diese nahtlos in das beschriebene deklarative Konzept ein.