"Packaged Applications" II: Application Express-Anwendungen als sofort installierbare Pakete

In der Vergangenheit war das größte Hindernis bei der Übertragung von Anwendungen auf andere Server oder Application Express-Umgebungen die Tatsache, dass die einzelnen Komponenten separat exportiert und importiert werden mussten. Mit APEX Version 2.2 gehört dies der Vergangenheit an. Nun ist es möglich, Unterstützende Objekte zu einer Applikation zu definieren. Bei einem Export werden diese Objekte dann mit in die Exportdatei aufgenommen und beim Import automatisch mitinstalliert. In der letzten Ausgabe haben Sie erfahren, wie unterstützende Objekte definiert werden und wie Sie ein einfaches Installationspaket erstellen. In dieser Ausgabe behandeln wir weitere, "fortgeschrittene" Möglichkeiten, die sich Ihnen bei der Definition der unterstützenden Objekte bieten.

Navigation zur Definition der Unterstützenden Objekte

Abb.1: Navigation zur Definition der Unterstützenden Objekte

Validierungen

Bereits in der letzten Ausgabe wurde beschrieben, wie Sie einfache Validierungen hinterlegen können. Dies bezog sich vor allem auf nötige Systemprivilegien oder das Vorhandensein bzw. Nicht-Vorhandensein bestimmter Datenbankobjekte. Nun lernen Sie noch weitergehende Validierungen kennen. Navigieren Sie den Unterstützenden Objekten (Abbildung 1). Wählen Sie dort Bearbeiten aus und klicken Sie anschließend auf die Reiterkarte Validierungen. Sie sollten daraufhin den in Abbildung 2 dargestellten Dialog sehen.

Unterstützende Objekte: Validierungen

Abb.2: Unterstützende Objekte: Validierungen

Im folgenden wird durch eine Validierung sichergestellt, dass die Datenbank, in welche die Anwendung installiert werden soll, die XML-Funktionalität (Oracle XML DB) enthält. Dies lässt sich am einfachsten durch eine Prüfung des Datenbankschemas XDB feststellen. Ist es vorhanden, so ist die XML DB installiert, fehlt es, so fehlt auch die XML DB.

Neue Validierung erstellen: Ist die XML DB vorhanden?

Abb.3: Neue Validierung erstellen: Ist die XML DB vorhanden?

Mit einem Klick auf die Schaltfläche Erstellen erzeugen Sie die neue Validierung. Wählen Sie Exists (SQL Abfrage gibt mindestens eine Zeile zurück) als Typ der Validierung aus. Hinterlegen Sie "SELECT username FROM all_users WHERE username='XDB'" als SQL-Abfrage. Nachdem Sie eine Fehlermeldung für den Fall, dass XDB nicht existiert, hinzugefügt haben, klicken Sie auf Erstellen. Es wäre darüber hinaus noch möglich, diese Validierung weiter unten an eine Bedingung zu knüpfen.

Unterstützende Objekte: Die erstellte Validierung

Abb.4: Unterstützende Objekte: Die erstellte Validierung

Auf diesem Weg kann natürlich nicht nur das Vorhandensein der XML DB sichergestellt werden, sondern auch das anderer Datenbankkomponenten ...

  • ... Oracle TEXT (Datenbankschema CTXSYS)
  • ... Oracle Spatial (Datenbankschema MDSYS)

... oder beliebiger Datenbankobjekte (Tabellen, PL/SQL-Pakete, Funktionen, Views und andere).

Ersetzungszeichenfolgen

Sind in Ihrer Anwendung globale Ersetzungszeichenfolgen (Substitution Strings) definiert, so kann der Anwender bei Installation einen Wert für diese angeben. Ersetzungszeichenfolgen definieren Sie in den Anwendungsattributen - Navigieren Sie im Application Builder zu Ihrer Anwendung, von dort aus zu den Anwendungsattributen und dann zu Definition. Dort sind die allgemeinen Attribute Ihrer Anwendung enthalten.

So könnte Ihre Applikation eine Hilfeseite mit Angaben zum Administrator, seiner Mail-Adresse oder seiner Telefonnummer ausgestattet werden. Diese könnten wie folgt als Ersetzungszeichenfolgen definiert sein (Abbildung 5).

Definition von Ersetzungszeichenfolgen in den Anwendungsattributen

Abb.5: Definition von Ersetzungszeichenfolgen in den Anwendungsattributen

Klicken Sie im Bereich der unterstützenden Objekte nun auf die Reiterkarte Ersetzungen. Dort sehen Sie alle in der Anwendung definierten Ersetzungszeichenfolgen - Sie können nun für jede einzelne festlegen, ob und mit welchem Prompt während der Installation eine Eingabe erwartet wird (Abbildung 6).

Definition der Ersetzungen in den unterstützenden Objekten

Abb.6: Definition der Ersetzungen in den unterstützenden Objekten

Während der Installation wird daraufhin der in Abbildung 7 dargestellte Dialog gezeigt. Die dort gemachten Angaben werden in die Anwendungsattribute übernommen (Application Builder, Anwendungsattribute, Definition) und können dort jederzeit wieder geändert werden (Abbildung 8).

Abfrage von Werten für die Ersetzungszeichenfolgen während der Installation

Abb.7: Abfrage von Werten für die Ersetzungszeichenfolgen während der Installation

Ersetzungszeichenfolgen in den Anwendungsattributen nach der Installation

Abb.8: Ersetzungszeichenfolgen in den Anwendungsattributen nach der Installation

Bedingte Installationsskripts

Installationsskripts wurden bereits in der letzten Ausgabe behandelt. Heute wollen wir ein wenig näher auf die Bedingungen eingehen, welche zu jedem Installationsskript hinterlegt werden können. Ein Anwendungsfall dafür wäre das Eingehen auf verschiedene Datenbankversionen. Wenn Sie die neuen Features einer Datenbankversion nutzen, gleichzeitig jedoch sicherstellen möchten, dass Ihre Anwendung auch auf den älteren Versionen läuft, so können Sie für jede Version eigene Skripts schreiben und mit Bedingungen sicherstellen, dass bei der Installation nur die zur jeweiligen Datenbankversion passenden Skripts ausgeführt werden.

Abbildung 9 zeigt das Einrichten einer solchen Bedingung. Navigieren Sie in den unterstützenden Objekten auf die Reiterkarte Skripts und wählen Sie das Skript aus, zu welchem Sie eine Bedingung hinterlegen möchten. Klicken Sie dann auf das Editiersymbol dieses Skripts. Sie gelangen daraufhin in den Skript-Editor - klicken Sie hier auf die linke Reiterkarte Skript-Eigenschaften, um eine Bedingung hinterlegen zu können.

Um sicherzustellen, dass eine Skript erst in Datenbanken ab Version 10 ausgeführt wird, wählen Sie als Bedingungstyp aus PL/SQL Funktions-Body, der einen booleschen Wert zurückgibt". Als PL/SQL Block hinterlegen Sie dann Folgendes:

begin
  if (dbms_db_version.version >= 10) then 
    return true;
  else
    return false;
end;

Das PL/SQL Paket DBMS_DB_VERSION enthält Angaben zur Datenbankversion. So liefert die Konstante VERSION die Major- und RELEASE die Minor-Versionsnummer zurück. In einer 10g Release 2-Datenbank enthält VERSION also den Wert 10 und RELEASE den Wert 2. Sie müssen die Konstanten mit PL/SQL auslesen, ein direkter Zugriff mit SQL ist nicht möglich.

Natürlich können Sie das Paket DBMS_DB_VERSION auch bei den Eingangs vorgestellten Validierungen nutzen um das Vorhandensein einer bestimmten Datenbankversion zu erzwingen. Wenn Ihre Applikation in einer 9er Datenbank nicht lauffähig ist, sollten Sie eine passende Validierung mit entsprechender Fehlermeldung hinterlegen.

Zurück zur Community-Seite