LeseprobeZu Beginn dieser Leseprobe führt Sie Jürgen Sieben in die wesent-lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen Sie einen genaueren Blick auf dynami-sche Aktionen, deren Verwendung, Ereignisse und Typen.
Jürgen Sieben
Oracle APEX – Das umfassende Handbuch
895 Seiten, gebunden, September 2017 79,90 Euro, ISBN 978-3-8362-4530-2
www.rheinwerk-verlag.de/4376
»Überblick über APEX«»Eine Websheet-Anwendung erstellen«»Dynamische Aktionen«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Wissen, wie’s geht.
2 Grundlagen von APEX
54
2.2 Überblick über APEX
Nachdem ich Ihnen die grobe Einsortierung von APEX in das Konzert der Entwick-
lungswerkzeuge für Webanwendungen erläutert habe, möchte ich mit Ihnen nun
einen Rundgang durch die wesentlichen Konzepte und Fachbegriffe von APEX star-
ten, damit Sie eine genauere Vorstellung davon erhalten, wovon wir eigentlich reden.
Vielleicht sollte ich damit beginnen, zu erklären, wie APEX installiert oder aktuali-
siert wird. Doch führt uns dies im Moment recht weit vom Überblick weg, daher habe
ich die Beschreibung der Installation bzw. Aktualisierung von APEX in den Anhang
dieses Buches verlegt. Sollten Sie noch keine funktionsfähige APEX-Installation
haben, haben Sie die Wahl: Entweder installieren Sie APEX nun, indem Sie die Anwei-
sungen hierzu im Anhang befolgen, oder aber Sie lesen sich zunächst einmal theore-
tisch in die Denkweise von APEX ein, um dann mit diesem Wissen die Installation
oder Aktualisierung später nachzuholen.
2.2.1 Allgemeiner Überblick
Dass APEX unter einer Anwendung eine Folge von Anwendungsseiten versteht, die
innerhalb der Datenbank gespeichert sind, hatte ich bereits erläutert. Damit jedoch
APEX eine solche Anwendung erstellen kann, sind einige Voraussetzungen erforder-
lich. So müssen Tabellen existieren, die speichern können, welche Webanwendun-
gen existieren, welche Seiten, Seitenelemente etc. in ihr enthalten sind und wie diese
Anwendungen ausgeführt werden sollen. Diese Tabellen werden in einem Daten-
bankschema gespeichert, das auch die gesamte Logik enthält, damit aus diesen Daten
eine Webanwendung berechnet werden kann. Als Datenbankschema (oder einfach
Schema) wird innerhalb einer Oracle-Datenbank die Gesamtheit der Objekte bezeich-
net, die einem Benutzer gehören. Das Schema hat den Namen APEX_<Version>, aktuell
APEX_050100. Nennen wir dieses Schema der Einfachheit halber das APEX-Schema.
Das APEX-Schema enthält die Tabellen und PL/SQL-Packages, um eine Webanwen-
dung aus der Datenbank heraus zu betreiben. In diesem Schema liegen daher auch
die Tabellen, die die Metadaten unserer Webanwendung (welche Seiten existieren,
welche Elemente sollen auf diesen Seiten dargestellt werden, wie lautet der Sessi-
onkontext einer Anwendung und so weiter) speichern, doch es enthält nicht die
Daten, die durch die Anwendung dargestellt werden sollen, also zum Beispiel die
Kundenadressen. In diesem Licht können Sie die Tabellen des APEX-Schemas mit
dem Data Dictionary der Datenbank vergleichen, das ja auch die Metadaten der
Benutzer, Tabellen, PL/SQL-Programme etc. der Datenbank enthält, nicht jedoch die
tatsächlichen Tabellendaten der einzelnen Datenbankbenutzer. Lassen Sie uns hier
vom APEX Data Dictionary sprechen.
4530.book Seite 54 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
55
2
Die Anwendungsdaten, die von einer APEX-Anwendung benötigt werden, können in
einem oder mehreren Schemata der Datenbank (potenziell auch in mehreren Daten-
banken) gespeichert werden, wichtig ist nur, dass APEX auf irgendeine Weise Zugriff
auf diese Daten erhält, damit sie entsprechend genutzt werden können. Um dies
sicherzustellen, hat das APEX-Schema das Recht, sämtliche Daten der Datenbank, in
der APEX installiert ist, zu lesen und zu benutzen. Dies ist natürlich ein sehr mächti-
ges Recht, das in jedem Fall kanalisiert werden muss. Wie dies geschieht, beschreibe
ich im nächsten Abschnitt 2.2.2 »Workspaces«.
Wird an die Datenbank nun die Anweisung gegeben, beispielsweise Seite 17 der
Anwendung 100 auszuführen (wir sprechen hier vom Show Processing), lädt APEX die
Metadaten dieser Seite und prüft anschließend, ob für diese Seite eine Anmeldung
des Endanwenders bei APEX erforderlich ist. Ist dies so, muss eine gültige Session-ID
vorhanden sein, ansonsten wird der Benutzer an eine Anmeldeseite weitergeleitet,
die bei erfolgreicher Anmeldung diese Session-ID erzeugt. Ist eine gültige Session-ID
vorhanden oder ist die Seite als public gekennzeichnet und benötigt daher keine Ses-
sion-ID, werden die hinterlegten select-Anweisungen zur Ermittlung der darzustel-
lenden Informationen dieser Seite ausgeführt, die Daten mit dem HTML-Rahmen zu
einer HTML-Seite verbunden und ausgeliefert.
Abbildung 2.1 zeigt diesen Fluss im oberen Teil der Abbildung (Show Processing). Die
Datenbank hat dabei die Möglichkeit, die Darstellung jedes Seitenelements (und
auch der gesamten Seite) an ein Rollenkonzept zu binden und damit von den Benut-
zerrechten des angemeldeten Benutzers abhängig zu machen. Ist ein Seitenelement
für diesen Benutzer nicht freigegeben, wird es gar nicht erst berechnet und fehlt auf
der Seite damit komplett.
Abbildung 2.1 Bearbeitung einer APEX-Seite (Quelle: Oracle)
Show Processing
Accept Processing
Authentica-tion &
Authorization
Authenti-cation &
Authorization
FetchMeta Data
� Validate� Process� Branch
Render HTML PagePage Tab, bread-
crumbs … regions, items & buttons
Page SubmitMethod Post
URLMethod Get
FetchMeta Data
4530.book Seite 55 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
56
Sendet der Benutzer eine Seite mit Eingaben in Formularfeldern an die Datenbank
zurück (Accept Processing in Abbildung 2.1), werden die eingefügten Daten zunächst
in den Sessionkontext kopiert (der, wie gesagt, eine Tabelle innerhalb des APEX-Sche-
mas ist). Die Seite wird anschließend daraufhin geprüft, ob weitergehende Aktivitäten
innerhalb der Datenbank durchgeführt werden müssen, wie zum Beispiel die einge-
gebenen Informationen in Datenbanktabellen der Anwendung zu speichern.
Anschließend analysiert APEX, welche Anwendungsseite als Nächstes berechnet wer-
den soll, erstellt diese analog zum schon besprochenen Show Processing und schickt
diese an den Client. Diese Seite kann zum Beispiel eine Bestätigungs- oder Fehlerseite
oder einfach die nächste Seite im vorgesehenen Workflow der Anwendung sein. Alle
Details, wie die Verwaltung einer Transaktion, das Reagieren auf Datenbankfehler, die
Ausführung von Validierungslogik etc., sind dabei weitestgehend vor dem Anwen-
dungsentwickler verborgen, solange die vorgefertigten Anwendungselemente ver-
wendet werden. Insbesondere in der Verwendung dieser vorgefertigten Anwen-
dungselemente liegt die hohe Entwicklungsgeschwindigkeit von APEX begründet.
2.2.2 Workspaces
Wie wir gesehen haben, benötigt eine APEX-Installation Zugriff auf die Daten, die
innerhalb einer APEX-Anwendung angezeigt werden sollen, aber in anderen Sche-
mata gespeichert werden. Das ist normalerweise nicht möglich, da ein Datenbankbe-
nutzer nur dann die Daten anderer Schemata sehen darf, wenn diese ihm dies
gestatten oder wenn der Benutzer administrative Rechte besitzt. Um APEX die Mög-
lichkeit zu geben, die erforderlichen Daten zu sehen, ohne ihn gleich zum Datenbank-
administrator zu machen, wird ihm das Recht eingeräumt, das – undokumentierte –
PL/SQL-Package dbms_sys_sql auszuführen, das in der Lage ist, jede beliebige SQL-
Anweisung mit den Rechten des Datenbankeigentümers SYS auszuführen. Verglei-
chen Sie dies vielleicht mit dem Unix-Kommando sudo. Dies ist natürlich ein mächti-
ges Recht, das nach Kanalisierung verlangt.
Diese Kanalisierung wird durch sogenannte Workspaces gewährleistet. Ein Work-
space ist ein logisches Konstrukt innerhalb von APEX, das für sich genommen »nur«
ein Eintrag im APEX Data Dictionary darstellt und nicht etwa ein Datenbankobjekt,
das außerhalb von APEX bekannt wäre. Weil aber auch alle APEX-Anwendungen
innerhalb des APEX-Schemas entwickelt, gespeichert und ausgeführt werden und die
Kontrolle über den Datenzugriff komplett über diesen Benutzer erfolgt, ist dies kein
grundsätzliches Problem. Für die Entwicklung von APEX-Anwendungen ist ein Work-
space unbedingte Voraussetzung.
Ein solcher Workspace muss vom APEX-Administrator erstellt werden, einem Benut-
zer, der (in unserem Beispiel) während der Installation von APEX unter dem Namen
ADMIN erstellt und mit einem (sicheren) Passwort versehen wurde. Ab Version 5 von
APEX ist die Erzeugung dieses Benutzers optional, auch kann der Name dieses Admi-
4530.book Seite 56 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
57
2
nistrators frei gewählt werden. Auch dieser Benutzer ist ein APEX-interner Benutzer,
der außerhalb von APEX nicht bekannt ist. Es existiert nach der Installation von APEX
auch bereits ein erster Workspace mit dem Namen INTERNAL, der nicht gelöscht wer-
den kann und für den ausschließlich der APEX-Administrator die entsprechenden
Administrationsrechte besitzt.
Sie melden sich also als APEX-Administrator im Workspace INTERNAL an und legen
dort weitere Workspaces für die eigentlichen APEX-Anwendungen an, denn im
Workspace INTERNAL selbst können keine APEX-Anwendungen erstellt werden. Admi-
nistriert wird APEX durch eine APEX-Anwendung, die Sie unter dem URI <server>/
ords/apex_admin aufrufen können, wie in folgender Abbildung zu sehen.
Abbildung 2.2 Anmeldebildschirm der APEX-Administrationsanwendung
Da die Anwendung selbst eine APEX-Anwendung ist, können Sie in Abbildung 2.3 ein
Beispiel für das Look & Feel von APEX-Anwendungen sehen: Sie erkennen, dass unter
der Schaltfläche Workspaces verwalten weitere Workspaces angelegt und admi-
nistriert werden können.
Alternativ zu dieser APEX-Anwendung lassen sich alle administrativen Aufgaben
auch als Skriptdateien ausführen. Dies benötigen Sie, weil auf Produktionsmaschinen
häufig nicht die grafischen Administrations- und Entwicklungswerkzeuge installiert
werden. Auch der Export einer APEX-Anwendung wird als eine solche Skriptdatei aus-
geführt, sodass Sie eine APEX-Anwendung mit einer grafischen Anwendung expor-
tieren und mit den Administrationswerkzeugen oder als Skript erneut installieren
können.
4530.book Seite 57 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
58
Abbildung 2.3 Startseite der APEX-Administrationsseite
Bei der Anlage eines neuen Workspaces wird festgelegt, auf welche Schemata inner-
halb der Datenbank dieser Workspace zugreifen darf. Theoretisch möglich ist es,
einem Workspace mehrere Schemata zuzuweisen, das werden wir in diesem Buch
allerdings nicht tun, weil es stets andere Möglichkeiten hierfür gibt, die ich bevor-
zuge. Woher meine Vorliebe hierfür kommt, erläutere ich in Kapitel 21, »Authentifi-
zierung und Autorisierung«. Bei der Anlage eines Workspaces wird stets auch ein
neuer APEX-Benutzer als Administrator dieses neuen Workspaces definiert. Dieser
Workspace-Administrator darf dann andere APEX-Benutzer innerhalb dieses Works-
paces administrieren und diesen zum Beispiel Entwicklerrechte gewähren, was diese
dann zu Entwicklern von APEX-Anwendungen (Workspace-Entwickler) innerhalb die-
ses Workspaces macht. Wie dies konkret gemacht wird, sehen wir uns in Abschnitt
22.3, »Bereich ›Workspace‹ verwalten«, an. Als letzte Kategorie von Benutzern kann
4530.book Seite 58 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
59
2
der Workspace-Administrator Workspace-Benutzer anlegen, die lediglich Benutzer-
rechte haben und daher für den Betrieb der Anwendung genutzt werden können. Ein
Workspace-Benutzer hat keinerlei Zugriff auf den Anwendungscode oder die admi-
nistrativen Einstellungen des Workspaces.
Durch diese Festlegungen hat ein Workspace-Entwickler (oder aber auch der Work-
space-Administrator) nur noch die Möglichkeit, auf die Metadaten von APEX und die
Daten des für diesen Workspace freigegebenen Datenbankschemas zuzugreifen, die
Oracle-Datenbank besteht für diese Benutzer also ausschließlich aus den Daten, die
dem zugeordneten Schema gehören oder die diesem Schema zugänglich gemacht
worden sind. Diese Limitierung ist weder durch den Workspace-Administrator noch
durch den Anwendungsentwickler zu umgehen. Innerhalb eines solchen Workspaces
kann nun der Anwendungsentwickler beliebig viele APEX-Anwendungen anlegen
und entwickeln. Für alle diese Anwendungen gilt, dass sie vom gleichen Entwickler-
team entwickelt und vom gleichen Workspace-Administrator verwaltet werden und
sich auf die gleichen Daten der Datenbank beziehen. Die Workspace-Benutzer
schließlich haben nur Zugriff auf die Funktionen, die in der Anwendung für sie frei-
geschaltet wurden.
Abbildung 2.4 zeigt das Verhältnis von Workspaces (Workspace 1–3) zu Datenbank-
schemata (Schema 1–4) einerseits und zu APEX-Anwendungen (Department 1–3)
andererseits. Für Anwendung 1 besteht die Datenmenge, die innerhalb der Daten-
bank benutzt werden kann, lediglich aus den Daten aus Schema 1, zuständig für Ent-
wicklung und Administration der Anwendung ist der Workspace-Administrator bzw.
-Entwickler aus Workspace 1. Im Gegensatz dazu hat Anwendung 2 Zugriff auf die
Daten der Schemata 2 und 3.
Abbildung 2.4 Übersicht über Workspaces (Quelle: Oracle)
Department 1(e.g. Sales)
Department 2(e.g. Support)
Department 3(e.g. HR)
Workspace 1
Workspace 2
Workspace 3
Schema 1
Schema 2
Schema 3
Schema 4
Oracle Database with Oracle Application
Express
4530.book Seite 59 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
60
Zusätzlich können in einem Workspace durch den Workspace-Administrator noch
sogenannte Gruppen angelegt und einzelnen APEX-Benutzern zugeordnet werden.
Mithilfe dieser Gruppen kann innerhalb einer APEX-Anwendung ein Rollenkonzept
realisiert werden, das einzelne Seiten oder Seitenelemente aus- oder einblendet, je
nachdem, ob dem angemeldeten Benutzer eine Workspace-Gruppe zugeordnet wurde
oder nicht.
Exkurs: Eine Analogie zum Verständnis von Workspaces
Einen Workspace können Sie sich analog zu einem virtuellen Rechner vorstellen. Bei
der Virtualisierung von Rechnern wird auf einem physikalisch vorhandenen Rechner
eine Software installiert, mit deren Hilfe es möglich ist, virtuelle Rechner zu erstellen
und zu verwalten. Beispiele für solche Software sind VMware, Citrix, VirtualBox und
andere.
Auf Ebene des physikalisch vorhandenen Rechners existieren Benutzer, die als Admi-
nistratoren diesen Rechner verwalten dürfen. In dieser Analogie wären diese Adminis-
tratoren die »üblichen« Administratoren der Oracle-Datenbank. Der Virtualisierungs-
software, die nun als Rahmen um die virtuellen Rechner ausgeführt wird, entspricht
in unserer Analogie die APEX-Software des APEX-Schemas. Demjenigen, der die Virtu-
alisierungssoftware bedient und neue virtuelle Maschinen anlegen darf, entspricht
der APEX-Administrator.
Wird ein virtueller Rechner aufgesetzt, enthält dieser ein eigenes Betriebssystem
und eigene Administratoren. Natürlich sind diese Administratoren mit weitreichen-
den Rechten bezüglich der virtuellen Maschinen ausgestattet, jedoch haben sie kei-
nerlei Administrationsrecht zum Beispiel auf den physikalischen Rechner, sie können
auch keine weiteren virtuellen Maschinen anlegen und wissen sogar nicht einmal
davon, dass es weitere virtuelle Maschinen gibt (philosophisch wird es, wenn wir uns
klarmachen, dass sie nicht einmal wissen, dass sie selbst nur virtuell sind …). Das ist
bei APEX genauso, eine virtuelle Maschine (ein Workspace) hat einen Workspace-
Administrator, dessen Rechte aber auf administrative Arbeiten innerhalb dieses
Workspaces beschränkt sind.
Nun wird es etwas schräg: Die Daten, auf die ein Workspace zugreifen darf, können wir
uns als Netzwerklaufwerke vorstellen, die der virtuellen Maschine zugeteilt wurden.
Auf diesen Netzwerklaufwerken finden wir Dateien mit Daten, die wir verarbeiten dür-
fen. Welche Netzwerklaufwerke wir lesen oder sogar beschreiben dürfen, regeln nicht
wir, sondern der APEX-Administrator beim Einrichten des Workspaces, indem er diesem
Workspace den Zugriff auf verschiedene Schemata der Datenbank gestattet. Dort fin-
den sich die Daten für die Anwendungen, die innerhalb unseres Workspaces erstellt
werden, und dorthin speichern diese Anwendungen auch die Daten.
4530.book Seite 60 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
61
2
Lehnen wir uns einmal kurz zurück, und sehen wir uns an, was wir bislang haben:
� APEX besteht im Wesentlichen aus einem APEX-Schema, in dem Tabellen für das
APEX Data Dictionary und Logik für die Ausführung von APEX-Anwendungen vor-
gehalten werden.
� Innerhalb von APEX wird ein Workspace angelegt, sagen wir mit dem Namen
APEX_BUCH_WS. Bei der Anlage wird diesem Workspace der APEX-Benutzer, zum Bei-
spiel BUCH_ADMIN, als Administrator zugeordnet.
� Ebenfalls haben wir festgelegt, dass der Workspace Zugriff auf das Schema APEX_
BUCH erhalten soll.
� Der Workspace-Administrator BUCH_ADMIN meldet sich bei APEX beim Workspace
APEX_BUCH_WS an und erstellt den Benutzer BUCH_ENTWICKLER, dem er Entwicklungs-
rechte zugesteht. Nun kann sich der Benutzer BUCH_ENTWICKLER am Workspace
APEX_BUCH_WS anmelden und beginnen, eine APEX-Anwendung zu erstellen.
� Dazu stehen ihm die APEX-Entwicklungsumgebung und alle Tabellendaten des
Benutzers APEX_BUCH zur Verfügung. Welche Daten APEX_BUCH jedoch sehen darf,
kann dadurch begrenzt sein, welche Tabellen dieser Benutzer anlegt und welche
Daten er einfügt, alternativ aber auch dadurch, welche Rechte diesem Benutzer
wiederum durch andere Schemata erteilt wurden. So können zu den eigenen
Daten eventuell auch einzelne Tabellen aus anderen Schemata oder auch anderen
Datenbanken hinzukommen.
� Nachdem die APEX-Anwendung erstellt wurde, kann diese gestartet und durch die
beiden Benutzer BUCH_ADMIN und BUCH_ENTWICKLER verwendet werden.
� Der Workspace-Administrator kann nun weitere Workspace-Benutzer erstellen,
die anschließend die erzeugte Anwendung verwenden können. Sind im Work-
space zudem Gruppen angelegt worden, könnten diese einzelnen Workspace-
Benutzern zugeordnet worden sein oder nicht und damit steuern, dass bestimmte
Funktionalitäten der Anwendung für diesen Benutzer verfügbar sind oder nicht.
Wie Sie das alles konkret machen, besprechen wir, wenn wir eine eigene Anwendung
erstellen. Hier soll es zunächst einmal ums große Ganze gehen.
2.2.3 APEX-Anwendung
Eine APEX-Anwendung (ich werde im weiteren Verlauf nur noch von Anwendung spre-
chen) existiert also innerhalb eines Workspaces, der den Zugriff auf die Daten der
Datenbank kanalisiert und eine eigene Benutzerverwaltung implementiert. Eine sol-
che Anwendung besteht, wie bereits beschrieben, aus mehreren Anwendungsseiten,
auf denen die verschiedenen Funktionen der Anwendung implementiert werden.
Eine Anwendung ist in APEX ein Organisationsmittel, um fachlich zusammengehö-
4530.book Seite 61 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
62
rige Seiten zusammenzufassen. Dabei kann Ihre komplette Anwendung durchaus aus
mehreren Teilanwendungen aufgebaut werden. Wie wir später sehen werden, ist dies
in der Entwicklungsumgebung von APEX, die ja selbst auch eine APEX-Anwendung ist,
geschehen, denn die Verwaltung des Workspaces erfolgt über eine andere Anwen-
dung als die Erstellung einer Anwendung oder das Ausführen einer SQL-Anweisung.
Dennoch bemerken Sie von all dem normalerweise nichts, die Anwendungen inte-
grieren sich nahtlos.
Doch bietet es sich an, auch administrative Festlegungen auf der Ebene einer Anwen-
dung zu definieren. Zu diesen Festlegungen gehört unter anderem, welche optische
Form die Anwendung hat. Diese optische Form wird als Sammlung von HTML-Tem-
plates und zugehörigen CSS-Klassen in einem sogenannten Theme organisiert, das
einer Anwendung zugeordnet werden kann. Ein Theme bestimmt also zentral das
Erscheinungsbild unserer Anwendung. APEX liefert mehr als 20 verschiedene
Themes mit, obwohl meine Empfehlung auf ganz wenige, moderne Themes be-
schränkt ist. Die älteren Themes spiegeln sowohl die Lernkurve der APEX-Entwickler
als auch die technische Entwicklung der letzten Jahre wider, in ihnen befinden sich
zum Beispiel Seitenlayouts, die komplett auf Tabellen aufbauen, was heute nicht
mehr so gern gesehen wird. Mittlerweile sind die modernen Themes ab 23 jedoch auf
div-Basis aufgebaut, extrem flexibel und HTML5-geeignet und zum Teil sogar so kon-
zipiert, dass Anwendungen mit diesen Themes auch auf mobilen Geräten angezeigt
werden können, ohne allzu hässlich zu werden. Die in einem Theme enthaltenen
HTML-Templates werden dann durch die einzelnen Seitenelemente referenziert und
steuern dadurch, wie die konkrete Seite aufgebaut ist. Seit Version 5 von APEX wird
ein neues Theme mitgeliefert, das wir in diesem Buch als einziges verwenden wer-
den, denn es enthält viele neue und äußerst attraktive Funktionen, die in älteren
Themes schmerzlich vermisst wurden.
Zusätzlich zur Zuweisung eines Themes werden weitere generelle Einstellungen für
eine Anwendung festgelegt, wie zum Beispiel den Namen der Anwendung, das zu
verwendende Datumsformat und viele weitere Details.
APEX bietet an, Anwendungen auf verschiedene Weise zu erzeugen. Zur Wahl stehen
derzeit drei Wege:
� Mitgelieferte Anwendungen
Diese Anwendungen sind APEX-Anwendungen, die vom APEX-Entwicklerteam
erstellt und mit APEX ausgeliefert werden. Sie können einfach installiert und bei
Bedarf auch verändert werden.
� Websheet-Anwendungen
Hierbei handelt es sich um eine vorgefertigte APEX-Anwendung, die so generisch
ausgelegt ist, dass sie dem Endbenutzer erlaubt, eigene Anwendungen mit vorge-
gebener Funktionalität zu erzeugen. Websheet-Anwendungen sind funktional
4530.book Seite 62 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
63
2
recht eingeschränkt, können aber für einige Anwendungszwecke sehr gut verwen-
det werden.
� »Normale« APEX-Anwendungen
Diese Anwendungen sind es, um die es in diesem Buch hauptsächlich geht, denn
dieser Anwendungstyp ermöglicht es Ihnen, eine komplette Anwendung von
Grund auf selbst zu erstellen und alle Möglichkeiten von APEX zu verwenden
sowie eigene Erweiterungen hinzuzufügen.
2.2.4 Seiten
Auf der nächsten Gliederungsebene finden sich unterhalb der Anwendung die
Anwendungsseiten. Auch eine Anwendungsseite (oder einfach eine Seite) ist lediglich
eine Zeile innerhalb des APEX Data Dictionary. Auf einer Seite platzieren Sie weitere
Seitengliederungselemente, insbesondere Regionen, die ich im nächsten Abschnitt
besprechen werde, um das Aussehen der Seite zu gestalten und die Auswahl der
anzuzeigenden Daten zu steuern.
Eine Seite ist eine wichtige Organisationsebene Ihres Anwendungscodes, denn auf
ihr wird definiert, welche Seitenelemente angezeigt werden sollen, welche Aktivitä-
ten zur Datengewinnung sowie -bearbeitung ausgeführt werden sollen und auf-
grund welcher Logik die nächste darzustellende Seite ermittelt werden soll. Im
Vergleich zum Model-View-Control-Patter, das ich eingangs beschrieben habe, ist die
Seite wohl am ehesten dem Control-Anteil zuzurechnen. Auch eine Seite als Ganzes
referenziert ein Template des Themes und steuert so, wie sie dargestellt werden soll,
doch ist die Hauptaufgabe die Kontrolle des Anwendungsflusses.
2.2.5 Regionen, Items und Schaltflächen
Gehen wir eine Stufe weiter, treffen wir auf einer Seite auf die Regionen. Eine Region
ist optisch als umrahmter, grob rechteckiger Bereich auf einer Seite erkennbar,
obwohl das nicht immer so sein muss. Die verschiedenen Regionen können unter-
schiedliche Typen besitzen. So könnte eine Region zum Beispiel ein Menü, aber auch
ein SQL-Bericht in Form einer Tabelle oder ein Formular sein. APEX liefert eine große
Anzahl vorbereiteter Regionstypen mit, die zudem noch mit unzähligen Parametern
auf Ihre konkreten Bedürfnisse hin angepasst werden können. Einige Regionen wer-
den durch spezielle Seitentypen direkt angelegt und werden dann durch Seitenpro-
zesse flankiert, die bereits so eingestellt sind, dass zum Beispiel die Verarbeitung von
Benutzereingaben automatisiert in der Datenbank gespeichert werden können und
vieles mehr.
Abbildung 2.5 zeigt eine Seite einer Anwendung. Auf dieser Seite sehen Sie, durch
Rahmen kenntlich gemacht, einige der angesprochenen Regionstypen in Aktion.
4530.book Seite 63 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
64
Abbildung 2.5 Eine Seite einer Beispielanwendung mit Regionen
Viele Regionen werden durch Assistenten in der APEX-Entwicklungsumgebung an-
gelegt und benötigen lediglich eine Parametrierung, wie etwa die, auf welche Tabelle
sie sich beziehen sollen oder auf welche Weise neue Primärschlüsselinformationen
generiert werden sollen. Nachdem Sie einen solchen Assistenten ausgeführt haben,
werden alle benötigten Seitenelemente auf der Seite angelegt. Konkret könnten Sie
eine Region vom Typ Form benötigen, um Tabellendaten in der Webanwendung zu
bearbeiten. In einem Assistenten könnten Sie dann definieren, aus welcher Tabelle
die Daten stammen, welche Spalten Sie in das Formular aufnehmen möchten, welche
Aktivitäten erlaubt werden sollen (Löschen, Ändern, Neu anlegen) und so weiter. Das
Ergebnis ist eine Region vom Typ Form, die bereits eine Reihe sogenannter Seitenele-
4530.book Seite 64 Donnerstag, 7. September 2017 3:59 15
2.2 Überblick über APEX
65
2
mente (Items) enthält, also Formularfelder für jede ausgewählte Spalte Ihres Formu-
lars. Abbildung 2.6 zeigt Ihnen ein Beispiel für ein solches Formular.
Abbildung 2.6 Beispiel eines Formulars
Beachten Sie in der Abbildung oben, dass die verschiedenen Datentypen der Spalten
bereits berücksichtigt wurden, als das Formular angelegt wurde: Ein Datumsfeld hat
einen Datepicker als Eingabefeld erhalten, eine BLOB-Spalte (siehe Feld Product Image)
hat ein Dateiupload-Control erhalten und so weiter. Mit einfachen Mitteln sind auch
dynamische Einblendmenüs möglich (wie im Beispiel das Feld Category, es reicht im
Regelfall, eine entsprechende SQL-Anweisung zu hinterlegen oder die Werte hän-
disch einzutragen) und vieles mehr. Optional können Sie zu den Eingabefeldern
Hilfstexte hinterlegen, kenntlich machen, ob die Eingabe in ein Feld verpflichtend ist
oder nicht (was, wenn die Spalte einen not null-Constraint enthält, auch automatisch
geschieht), weitere Validierungen festlegen etc.
Zudem hat der Assistent für Sie die benötigten Schaltflächen angelegt. Wichtiger
noch: Alle Schaltflächen sind bereits aktiv, das heißt, es wurden dafür vorbereitete
Programmteile hinterlegt, die beim Klick darauf aufgerufen werden und dafür sor-
gen, dass die Daten korrekt in der Datenbank verarbeitet werden. Der Assistent legt
4530.book Seite 65 Donnerstag, 7. September 2017 3:59 15
2 Grundlagen von APEX
66
in der Regel auch fest, auf welche Seite als nächstes, im Fall der erfolgreichen (oder
auch der nicht erfolgreichen) Abarbeitung, verzweigt werden soll. Die Erstellung
einer solchen Formularseite nimmt im Regelfall weniger als 20 Minuten in Anspruch
(wovon zwei oder drei auf die eigentliche Erstellung des Formulars gehen und die
restliche Zeit auf das Feintuning), so denn keine ungewöhnlichen Validierungen oder
Datenbankaktivitäten vorgenommen werden müssen.
Jede Region, jedes Item und jede Schaltfläche ist wiederum mit HTML-Templates ver-
bunden, die steuern, wie die jeweilige Darstellung erfolgen soll. Jedem Element liegt
dabei eine Auswahl verschiedener Templates zugrunde, aus denen Sie die Darstel-
lung wählen können, ebenso, wie Sie eigene Templates entwickeln und Elementty-
pen zuordnen können. Ebenfalls können Sie jedem Element einen Verweis auf eine
benötigte Autorisierungsprüfung geben, die zum Beispiel kontrolliert, ob dem ange-
meldeten Benutzer das Recht, dieses Element zu nutzen, zugeordnet wurde oder
nicht. Im Beispiel oben könnte ein Benutzer eventuell das Recht zugestanden
bekommen, den Preis eines Produktes zu editieren, während dies anderen Benutzern
nicht möglich ist. In Abhängigkeit hiervon würde dann das Feld List Price entweder
in die Seite aufgenommen oder auch nicht. APEX sorgt dafür, dass nur autorisierte
Benutzer diese Elemente sehen können. Dies alles erfolgt einfach durch Auswahl von
Parametern und nur minimaler, zentral hinterlegter Programmierung.
2.2.6 Zusammenfassung
APEX entlastet Sie als Entwickler also von den grundlegenden Problemen der HTTP-
und Datenbanksession-Verwaltung, organisiert die Transaktionen in der Datenbank,
die Benutzerauthentifizierung und -autorisierung, kümmert sich um die unterschied-
lichen Browserimplementierungen und automatisiert die Erstellung weitverbreiteter
Anwendungselemente. Anwendungen in APEX sind in Workspaces organisiert und
erlauben einen feingranularen Zugriff auf Daten der Datenbank. Durch die Work-
spaces entsteht zudem die Möglichkeit, in einer Datenbank viele logisch unabhängige
APEX-Anwendungen zu verwalten. Eine Anwendung ist zudem, aufgrund der Gestal-
tung der Templates und Themes, internationalisierbar und weitgehend barrierefrei
und kommt mit minimaler Programmierung aus. So weit, so gut, möchte man sagen,
zumal sich auch das Look & Feel angenehm und modern präsentiert.
Dass natürlich weitergehende Wünsche offenbleiben, liegt in der Natur der Sache.
APEX ist aber durch eigene Programmierung auch beinahe beliebig erweiterbar.
Allerdings steigt mit diesen Möglichkeiten auch der Aufwand. Aus diesem Grund
beschäftigt sich der erste und zweite Teil dieses Buches zunächst mit dem, was ohne
Programmieraufwand machbar ist. Und das ist, wie wir sehen werden, bereits eine
ganze Menge!
4530.book Seite 66 Donnerstag, 7. September 2017 3:59 15
67
3
Kapitel 3
Eine Websheet-Anwendung erstellen
Mit der Betrachtung der Websheets werden wir die erste APEX-
Anwendung erstellen. Der Fokus liegt darauf, zum einen ein Gefühl für
diese Art Anwendungen und mögliche Einsatzbereiche zu schaffen
und zum anderen das Look & Feel der Entwicklung von APEX-Anwen-
dungen an einem einfachen Beispiel zu erfahren.
Die Entwicklung eigener Anwendungen in APEX erfolgt normalerweise als Daten-
bankanwendung, weil dieser Anwendungstyp Ihnen die volle Kontrolle über das Aus-
sehen und das Verhalten der Anwendung bietet. Manchmal jedoch ist dieser Aufwand
für eine einfache, abteilungs- oder unternehmensweit zugängliche Sammlung simpel
strukturierter Daten übertrieben und durch den höheren Entwicklungsaufwand auch
zu unflexibel. Es wäre oftmals schön, wenn man eine Anwendung hätte, die Endan-
wender selbst dazu verwenden könnten, Daten zu sammeln und im Netzwerk zur
Verfügung zu stellen. Wenn dann noch die Möglichkeit der Suche in diesen Daten und
der einfachen Analyse vorhanden ist, umso besser. Websheet-Anwendungen leisten
genau das, erweitert um ein flexibles Benutzerverwaltungskonzept, eine rollenba-
sierte Benutzerrechteverwaltung und der Möglichkeit, eigene Datensammlungen zu
erstellen, bestehende zu erweitern und zu bearbeiten sowie Seiten zu kommentieren
und mit Tags oder Verweisen zu versehen.
APEX selbst positioniert Websheet-Anwendungen analog zu einem Wiki, hebt aber
hervor, dass diese Anwendungen einen Vorteil beim Sammeln strukturierter Infor-
mationen bieten. Da die Daten durch den Endanwender eingefügt und bearbeitet
werden können, aber in einer zentralen Datenbank gespeichert werden, kombinie-
ren diese die Funktionalität von Spreadsheet-Anwendungen mit einem einfachen
Wiki und lösen nebenbei das Problem des Zugriffs auf die Daten im Team und Fragen
des Backup & Recovery. Eine interessante Alternative also zu einfachen Excel-
Dateien, die ansonsten im Unternehmen oder in den Abteilungen gepflegt, gespei-
chert und ausgetauscht werden müssen. Denken Sie hierbei, als Beispiel, an techni-
sche Dokumentationen, FAQ-Listen oder ähnliche Anwendungen.
4530.book Seite 67 Donnerstag, 7. September 2017 3:59 15
3 Eine Websheet-Anwendung erstellen
68
3.1 Übersicht über Websheet-Anwendungen
Eine Websheet-Anwendung wird durch einen berechtigten Benutzer eines Work-
spaces erstellt. Im Gegensatz zu Datenbankanwendungen werden die Daten einer
Websheet-Anwendung nicht (vorrangig) im Datenbankschema des zugehörigen
Workspace-Schemas zur Verfügung gestellt, sondern im Rahmen der Bedienung
einer Websheet-Anwendung über die Oberfläche importiert. Dieser Import erfolgt
mittels Copy & Paste aus Tabellenkalkulationen oder CSV-Dateien, kann aber auch
komplett mithilfe der Anwendung erfasst werden. Einen Zugriff auf Tabellen des
Workspace-Schemas haben Sie in einer Websheet-Anwendung nur, wenn Sie dies für
das Websheet gestatten. Die importierten oder lokal erfassten Daten werden in soge-
nannten Datenrastern zur Verfügung gestellt.
3.1.1 Bedienung einer Websheet-Anwendung
Eine Websheet-Anwendung stellt Seiten und Datenraster zur Verfügung. Während
die Datenraster die Daten bereitstellen, übernehmen Seiten die Gliederung und
Bedienung der Anwendung. Abbildung 3.1 zeigt die relevanten Bedienelemente einer
Websheet-Seite bzw. der auf ihr platzierten Abschnitte.
Abbildung 3.1 Bedienelemente einer Websheet-Seite (Quelle: Oracle)
4530.book Seite 68 Donnerstag, 7. September 2017 3:59 15
3.1 Übersicht über Websheet-Anwendungen
69
3
Menüleiste (Menubar)
Jede Seite verfügt über ein vorgegebenes Menü zur Navigation in der Websheet-
Anwendung. Zur Navigation zwischen den Seiten werden in diesem Menü alle ange-
legten Seiten in ihrer hierarchischen Struktur dargestellt, es sind aber auch übergrei-
fende Funktionen zur Erweiterung, Suche etc. in der Websheet-Anwendung möglich.
Welche Optionen Ihnen hier angeboten werden, hängt von den Benutzerrechten des
angemeldeten Benutzers ab.
Websheet-Suche (Websheet Search)
Da die Daten einer Websheet-Anwendung in einer bekannten Tabellenstruktur ge-
speichert werden, können die dort gespeicherten Daten über eine zentrale Suchfunk-
tion durchsucht werden. Die Suche erstreckt sich darüber hinaus aber auch auf Tags,
Datenraster und Metadaten der Anwendung.
Präsentationsmodus
Die Anwendung kann, ohne Menüs und andere störende Seitenelemente, auch in
einer Art »Kioskmodus« betrieben werden.
Abschnitte reduzieren (Section Collapse)
Jeder Abschnitt auf einer Seite kann aus- und eingeklappt werden, um größere Da-
tenmengen übersichtlich zu verwalten.
Bearbeiten (Edit Section-Verweis)
Eine Wiki-artige Editierungsfunktion, die an ein Rollenkonzept gebunden ist, erlaubt
dem Anwender, die Informationen eines Abschnitts beliebig zu bearbeiten. Ände-
rungen an Abschnitten stehen allen Anwendern sofort zur Verfügung, im Hinter-
grund wird eine Historie aller Änderungen gepflegt.
Systemsteuerung (Websheet Control Panel)
Zur Bearbeitung bzw. Erweiterung der Websheet-Anwendung stellt jede Seite ein
Menü mit entsprechenden Funktionen zur Verfügung. Auch die Systemsteuerung ist
an ein Rollenkonzept gebunden.
Seiteninformation (Page Information)
Jede Seite stellt statistische Daten dar, die Auskunft über das Erstell- bzw. Änderungs-
datum und andere Informationen geben.
4530.book Seite 69 Donnerstag, 7. September 2017 3:59 15
3 Eine Websheet-Anwendung erstellen
70
Ansichtsmodus (Presentation Mode)
Jede Websheet-Anwendung ist in einem Standard-, Screenreader- und High Contrast-
Modus verfügbar, um einer weiten Anwendergruppe den Zugang zu den Informatio-
nen zu ermöglichen.
Anmerkungen (Annotations)
Einer Seite können Dateien, Tags oder Hinweise (Bemerkungen) hinzugefügt werden,
um Informationen zu kategorisieren und dadurch leichter durchsuchbar zu machen
oder weitere Informationen anzuhängen.
3.2 Mitgelieferte Websheet-Anwendungen
APEX liefert zwei Websheet-Anwendungen mit: <Mitgelieferte Anwendungen> �
AnyCo IT Department und Big Cats. Sie installieren die mitgelieferten Anwendungen,
indem Sie auf das Icon der Anwendung und anschließend auf die Schaltfläche Mit-
gelieferte Anwendung installieren klicken. Sollte noch keine Websheet-An-
wendung in Ihrem Workspace installiert worden sein, wird APEX vor der Installation
mitteilen, dass einige Tabellen installiert werden müssen, in denen anschließend die
Websheet-Anwendung installiert wird, wie in Abbildung 3.2 gezeigt.
Abbildung 3.2 Installation der Websheet-Tabellen beim ersten Installieren
Diesen Dialog können Sie bestätigen und die Objekte installieren lassen. Hierzu führt
Sie APEX zu einer administrativen Seite, in der Sie den Verweis Websheet-Daten-
bankobjekte erstellen angeboten bekommen. Klicken Sie auf diesen Verweis.
Nun öffnet sich eine weitere Anwendungsseite, in der Ihnen eine Liste von Tabellen-
namen (und eine Sequenz) angezeigt werden, die nun installiert werden sollen. Kli-
cken Sie auf die Schaltfläche Weiter > und auf der Bestätigungsseite, die nun folgt,
4530.book Seite 70 Donnerstag, 7. September 2017 3:59 15
3.3 Websheet-Eigenschaften
71
3
auf die Schaltfläche Erstellen. Eventuell kann es bei dieser Aktion zu Fehlermeldun-
gen kommen, wenn Ihnen Rechte fehlen, die für die Installation der Objekte benötigt
werden. Fragen Sie in diesen Fällen Ihren Datenbankadministrator. Sind Sie selbst
dieser Administrator, gewähren Sie dem Workspace-Schema die entsprechenden
Rechte. Hat alles funktioniert, wird dies durch eine Erfolgsmeldung bestätigt, und Sie
können nun die Websheet-Anwendung installieren oder auch selbst eine neue
Anwendung erstellen. Um die Anwendung »AnyCo IT Department« zu installieren,
müssen Sie diese auswählen und installieren. Nun sollte alles funktionieren, und
nach Bestätigen der entsprechenden Meldungen können Sie die Anwendung im
Bestätigungsbildschirm direkt starten. Sie werden aufgefordert, sich anzumelden.
Verwenden Sie hierfür Ihren APEX-Account, mit dem Sie sich auch bei APEX ange-
meldet haben.
Gerade die Anwendung »AnyCo IT Department« gibt Ihnen einen recht ansprechen-
den Einblick in die Funktionalität, die mit einem Websheet erreicht werden kann.
Schaffen Sie sich einen Überblick über die Navigation durch die Anwendung und die
verwendeten Seitenelemente. Testen Sie die Funktionalität, indem Sie die in Ab-
schnitt 3.1.1 beschriebenen Bedienmöglichkeiten anwenden. Anschließend können
Sie sich einen Überblick über die Technik, mit der die einzelnen Abschnitte erzeugt
wurden, verschaffen, indem Sie die Schaltfläche Edit der einzelnen Abschnitte an-
klicken und sich mit den Metadaten vertraut machen. Die Syntax der Verweise auf
Datenraster bzw. Berichte werden wir noch näher besprechen, wenn wir uns die Er-
stellung einer eigenen Websheet-Anwendung näher ansehen.
3.3 Websheet-Eigenschaften
Die Editierungsseite einer Websheet-Anwendung ist sozusagen ein Extrakt der
Kernfunktionalität von APEX bezüglich der Verwaltung von Anwendungen. Ähnli-
che, wenn auch weiter gehende Möglichkeiten finden Sie in jeder APEX-Daten-
bankanwendung. Die Optionen, die Sie hier einstellen können, lassen sich auch aus
der laufenden Websheet-Anwendung heraus aufrufen, wenn Sie als Administrator
angemeldet sind und das Anwendungsmenü Administration � Websheet-Eigen-
schaften wählen. Sie sehen eine Anwendungsseite mit mehreren Sektionen darauf,
die Sie durch einen Klick auf das Pfeilsymbol Verweis der Regionsüberschriften
auf- und zuklappen können.
3.3.1 Websheet
Im ersten Seitenbereich finden sich allgemeine Angaben zum Websheet, wie der
Name, der Anwendungsstatus, die Startseite, das Standarddatumsformat etc. Das
4530.book Seite 71 Donnerstag, 7. September 2017 3:59 15
3 Eine Websheet-Anwendung erstellen
72
Feld Websheet-Absender-E-Mail-Adresse legt fest, welcher Absender verwendet
werden soll, falls Sie ein Datenraster oder einen Bericht per Mail versenden möchten.
3.3.2 Details/Logo
Die Angaben dieses Seitenbereichs erklären sich von selbst. Die hier eingegebenen
Informationen werden in den Menüs des Websheets an entsprechender Stelle einge-
fügt bzw. angezeigt.
3.3.3 Stil
Hier können Sie die CSS-Vorgaben, die für Websheet-Anwendungen gemacht wer-
den, durch ein eigenes CSS ersetzen oder ergänzen. Ideal, wenn Ihnen ein Überschrif-
tenformat nicht gefällt oder ein Kontrast zu klein sein sollte.
3.3.4 Authentifizierung
Hier wird es schon spannender: APEX liefert eine Reihe vorgefertigter Verfahren zur
Authentifizierung von Anwendungsbenutzern mit. Die einfachste Variante ist die
erste Option, Application Express Account. Bei dieser Option werden die Anwen-
dungsbenutzer innerhalb von APEX angelegt und mit Rechten versehen. Alternativ
können Sie aber auch eine Anbindung an Oracle Application Server Single Sign-On vor-
nehmen oder LDAP direkt benutzen. Reichen diese Optionen nicht, können Sie auch
ein eigenes Verfahren implementieren. All diese Optionen werden wir in Kapitel 21,
»Authentifizierung und Autorisierung«, besprechen. Gerade Websheet-Anwendun-
gen könnten aber häufig auch öffentliche Anwendungen sein, in diesem Fall wählen
Sie, dass Sie keine Authentifizierung benötigen.
Die Optionen erreichen Sie durch einen Klick auf die Schaltfläche Authentifizie-
rung bearbeiten. Interessant ist, dass diese Einstellungen nicht mehr innerhalb der
Websheet-Anwendung selbst, sondern in der APEX-Entwicklungsumgebung durchge-
führt werden. Wir sehen die verschiedenen Optionen zwar, nehmen sie im Moment
aber bitte einfach nur hin und verändern hier nichts. Kehren Sie zur Websheet-
Anwendung zurück, indem Sie den Zurück-Button Ihres Browsers betätigen.
3.3.5 Autorisierung
Während die Authentifizierung regelt, wer der angemeldete Benutzer ist, steuert die
Autorisierung, was dieser Benutzer in der Anwendung tun darf. In einer Websheet-
Anwendung ist hier nicht viel einzustellen, wir haben lediglich die Wahl zwischen
einem Standardwert und einer benutzerdefinierten Einstellung.
4530.book Seite 72 Donnerstag, 7. September 2017 3:59 15
3.4 Bestandteile einer Websheet-Anwendung
73
3
Das Attribut Access Control Listentyp legt fest, ob die Berechtigungen eines
angemeldeten Benutzers über die Berechtigungen des APEX-Benutzers kontrolliert
werden oder über eine eigene Access Control List (ACL). Nur falls APEX selbst die
Benutzerverwaltung übernimmt, haben Sie hier die Wahl, ansonsten wird immer die
ACL verwendet. Näheres zu ACLs beschreibe ich in Abschnitt 3.6, »Verwaltung von
Anwenderrechten«.
Das Einblendmenü Öffentlichen Zugriff erlauben steuert, ob ein nicht authen-
tifizierter Benutzer die Anwendung im Read Only-Modus sehen darf oder nicht. Selt-
samerweise ist diese Einstellung in einer laufenden Websheet-Anwendung nicht
editierbar, sondern nur direkt in der APEX-Entwicklungsumgebung.
3.3.6 SQL/Vorgeschlagene Objekte
Ihrem Workspace sind ein oder mehrere Datenbankschemata zugeordnet, die Tabel-
len, Views oder PL/SQL-Code beinhalten oder zumindest benutzen dürfen. Wenn Sie
diese Objekte und Möglichkeiten auch für Ihre Anwender freigeben möchten, müs-
sen diese per SQL-Tags eingerichtet werden (zu Tags kommen wir im nächsten
Abschnitt unter der Rubrik »Verweise«). Hier legen Sie fest, ob dies für dieses Web-
sheet geschehen darf oder nicht. Zudem können Sie eine Liste der Objekte, die Sie
freigeben möchten, einrichten, was dazu führt, dass diese Liste der Objekte auch in
Einblendmenüs des Websheets als Vorgeschlagene Objekte angezeigt wird. Aller-
dings können Sie über diesen Mechanismus nicht verhindern, dass die Anwender
auch auf die anderen verfügbaren Datenbankobjekte, die der Workspace sehen und
benutzen darf, zugreifen, es ist lediglich eine Hilfe für den Anwender, die häufig
benutzte Objekte anbietet.
3.4 Bestandteile einer Websheet-Anwendung
Im Kern besteht eine Websheet-Anwendung aus Datenrastern, Seiten mit darauf be-
findlichen Sektionen und Anmerkungen. Sehen wir uns diese Bestandteile ein wenig
näher an.
3.4.1 Datenraster / Tabellendaten
Tabellendaten innerhalb eines Websheets werden als Datenraster bezeichnet und
stellen einen Bericht zur Verfügung, dessen Daten direkt bearbeitet werden können.
Solche interaktiven Berichte sind in APEX generell verwendbar und erweitern die
einfache Darstellung von Daten als Tabelle um mannigfaltige weitere Optionen, wie
zum Beispiel die dynamische Ermittlung von Summen, die Darstellung als Grafik
oder den Export der Daten als CSV. Wir hatten in der Beispielanwendung bereits
4530.book Seite 73 Donnerstag, 7. September 2017 3:59 15
531
15
Kapitel 15
Dynamische Aktionen
Dynamic Actions erweitern die Anwendungsseiten um dynamische
Funktionen, die direkt im Browser ausgeführt werden. In diesem
Kapitel beleuchten wir einfache, aber auch komplexere Beispiele.
Mit dynamischen Aktionen hatten wir schon häufig im Verlauf des Buchs zu tun.
Nun aber wollen wir, ähnlich wie bei den anderen Bausteinen einer APEX-Anwen-
dung, einen intensiveren Blick auf diese Elemente werfen, um die Vor- und Nachteile
und die Einsatzbereiche zu verstehen. Dynamische Aktionen, dienen, so viel wissen
wir bereits, der Definition von Aktionen, die direkt im Browser ausgeführt werden
sollen. Dazu ist JavaScript erforderlich, was aber in vielen dynamischen Aktionen
nicht zu spüren ist. Das APEX-Team hat einen sehr guten Job darin gemacht, diese
Komplexität vor dem Anwendungsentwickler zu verbergen. Dennoch ist ein Ver-
ständnis von APEX für den korrekten Einsatz und vor allem die korrekte Planung von
dynamischen Aktionen erforderlich. Dieses Kapitel wird daher folgendem Plan fol-
gen: Wir starten mit einer näheren Betrachtung der Attribute und Typen von dy-
namischen Aktionen und sehen uns Einsatzbeispiele insofern an, als sie ohne Pro-
grammierung von JavaScript auskommen.
Dann werde ich einen Blick auf JavaScript und jQuery werfen, und zwar aus der Per-
spektive eines Datenbankentwicklers, der bislang in PL/SQL entwickelt hat und nun
einen Einstieg in JavaScript sucht. Erfahrene JavaScript-Entwickler können und wer-
den diesen Einstieg sicherlich überspringen, und für diese Leser ist dieser Teil des
Kapitels auch nicht gedacht. Umfangreiche Bücher zum Thema (zum Beispiel »Java-
Script – Das umfassende Handbuch« von Philip Ackermann, erschienen im Rhein-
werk Verlag) erreichen leicht den Umfang des vorliegenden Buches, und dies auch
nicht ohne Grund. Wenn Sie noch in der Vorstellung von JavaScript als einer mehr
oder minder rudimentär unterstützten Interpretersprache gefangen sind, in der nur
»ein wenig im Browser« programmiert wird, ist es Zeit, »aufzuwachen«: JavaScript ist
eine sehr gelungene, funktionale Programmiersprache, und es existieren umfangrei-
che serverseitige Implementierungen, wie zum Beispiel das Node.js-Framework.
Doch zunächst zu den dynamischen Aktionen und ihrer Verwendung.
4530.book Seite 531 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
532
15.1 Verwendung von dynamischen Aktionen
Auch wenn es scheint, dass dynamische Aktionen an vielen verschiedenen Stellen
einer APEX-Seite verwendet werden können, so ist dies eigentlich nicht der Fall, denn
die dynamischen Aktionen sind immer seitenbezogen, werden aber, je nach auslö-
sendem Ereignis auf der Seite, möglichst dicht bei diesem auslösenden Seitenele-
ment angezeigt. Allerdings haben die Kontextmenüs zum Erzeugen einer dynami-
schen Aktion den Vorteil, dass sie dem Dialog zur Erzeugung der dynamischen
Aktion bereits als Standardeinstellungen die auslösenden Seitenelemente und die
für diese Seitenelemente üblichsten auslösenden Ereignisse und Aktionen mitgeben.
Eine Auswahlliste, für die eine dynamische Aktion erstellt wird, wird auf diese Weise
bereits den change-Event und das Aktualisieren einer Region als Standardvorgaben
enthalten. Ändern Sie später diese Referenzen innerhalb der dynamischen Aktion,
wird APEX sie auch innerhalb der nun referenzierten Seitenelemente anzeigen. Die-
ses Verhalten kennen Sie auch zum Beispiel von Seitenelementen, die Sie über die
Attribute einer anderen Region zuordnen können. Theoretisch können Sie also alle
dynamischen Aktionen an einer Stelle erzeugen und anschließend über die Attribut-
einstellungen auf der Seite verteilen, doch ist der Regelfall, dies nicht zu tun, sondern
direkt an den betroffenen Seitenelementen über das jeweilige Einblendmenü.
Um die verschiedenen Formen dynamischer Aktionen zu zeigen, können Sie wieder
eine Beispielanwendung installieren, und zwar die Anwendung Sample Dynamic
Action, die ich über den Treffpunkt <UI DA> ansprechen werde. Diese Anwendung
enthält insgesamt eher einfachere dynamische Aktionen, doch sind es sehr häufig
gerade diese, die benötigt werden.
15.1.1 Was sind dynamische Aktionen?
Eine dynamische Aktion zu verstehen ist konzeptionell nicht ganz einfach. Klar, ich
könnte Ihnen sagen: Klicken Sie hierhin und dorthin, und Sie sehen, wie das Ganze
funktioniert. Doch ist damit insofern nichts gewonnen, als Sie im Fehlerfall nicht
wüssten, wo Sie anfangen sollten, um das Problem einzugrenzen oder zu lösen.
Daher möchte ich damit beginnen, Ihnen das Konzept zu erläutern.
Wie bereits häufiger beschrieben, müssen Sie, wenn sich im Browser irgendetwas
bewegen soll, immer die Sprache JavaScript verwenden. JavaScript basiert auf einem
Ereignismodell, das bedeutet, dass nicht direkt irgendetwas passiert, sondern immer
nur als Reaktion auf ein Ereignis, ähnlich einem Datenbanktrigger. Es ist für Einstei-
ger in die Webprogrammierung immer wieder ein Mysterium, zu sehen, wie unfass-
bar viele Ereignisse bei normaler Benutzung einer Seite auftreten. Wenn Sie die Maus
bewegen, werden kontinuierlich Ereignisse mit den neuen Koordinaten der Maus
emittiert. Führen Sie die Maus über einen Bereich einer Webseite, werden zusätzliche
Ereignisse ausgelöst, die melden, dass sich die Maus nun über dem Bereich befindet,
den Bereich jetzt verlässt, auf den Bereich geklickt hat und alles Mögliche mehr. Die
4530.book Seite 532 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
533
15
allermeisten Ereignisse verhallen ungehört, doch können Sie an bestimmte Ereig-
nisse die Ausführung von JavaScript-Code binden.
Übliche Ereignisse, auf die häufig reagiert wird, sind Tastenklicks, Klicks auf einen
Verweis oder die Betätigung der (¢)-Taste, doch können Sie auch alle weiteren Ereig-
nisse verwenden. Zudem enthalten die Ereignisse stets Informationen über das Sei-
tenelement, durch das das Ereignis ausgelöst wurde, zum Beispiel die Schaltfläche,
auf die geklickt wird. Das Ereignis bewegt sich, ausgehend vom auslösenden Seiten-
element, in der Hierarchie der Webseite nach oben, bis es, ungehört, am äußersten
HTML-Element verhallt, das Ereignis wird propagiert. Sie kennen dieses Verhalten
von Fehlern in PL/SQL.
Existiert in diesem Auslösepfad ein Ereignishandler, der auf genau dieses Ereignis
wartet, wird der mit diesem Handle verbundene JavaScript-Code ausgeführt. Das
bedeutet allerdings nicht notwendigerweise, dass damit das Ereignis bearbeitet wäre,
sondern im Regelfall wird es nach dieser Aktion weiter aufsteigen und weitere Aktio-
nen auslösen können. Dieses Verhalten können Sie zwar ändern, doch ist das nicht
der Regelfall, um möglichst wenige Seiteneffekte zu erzeugen, die dadurch bedingt
sein könnten, dass auf höherer Ebene auf ein Ereignis gewartet wird, das allerdings
durch eine Aktion auf niedrigerer Ebene abgefangen und unterdrückt wurde. Um
auch hier die Analogie zu PL/SQL zu suchen: Dieses Verhalten ist in PL/SQL genau
umgekehrt. Normalerweise wird ein Exception-Handler das Propagieren der Excep-
tion unterbinden, es sei denn, Sie schreiben den Befehl raise in den Exception-Hand-
ler. Bei PL/SQL wäre genau das als Standard eher ungewöhnlich.
Aufgrund der Vielzahl der Ereignisse und der Seitenelemente auf einer Seite ist es
recht aufwendig, stets die korrekte syntaktische Formulierung zur Bearbeitung eines
Ereignisses zu finden. Zudem ist nicht immer trivial, zu entscheiden, welche Manipu-
lationen am HTML-Dokument vorgenommen werden müssen, um einen gewünsch-
ten optischen Effekt zu erreichen. Da sich andererseits viele dieser Aktionen gleichen
(zum Beispiel das Ein- oder Ausblenden von Eingabefeldern), bietet es sich an, diese
Arbeiten zentral zu definieren und deklarativ verwenden zu können. Genau das
machen dynamische Aktionen. Sie stellen eine Schnittstelle zwischen APEX und der
durch APEX generierten HTML-Seite dar mit dem Ziel, Aktionen auf der Anwen-
dungsseite ausführen zu können.
Dazu muss die dynamische Aktion JavaScript-Code ausführen, der das HTML-Doku-
ment manipuliert. Etwas genauer und technischer: Das HTML-Dokument ist eigent-
lich eine Textdatei mit HTML-Elementen. Aus dieser Datei wird im Browser ein
sogenannter DOM-Baum konstruiert. DOM steht für Document Object Model und ist
eine Speicherstruktur, die zunächst der HTML-Seite inhaltlich entspricht, wenn auch
die Darstellung technisch komplexer realisiert wird. Wird der DOM-Baum nun mani-
puliert, sehen Sie das dem Quelltext der Seite im Regelfall nicht an, denn dieser
Quelltext diente nur als initiale »Blaupause« zur Erstellung des DOM-Baums. Den
4530.book Seite 533 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
534
aktuellen Stand des DOM-Baums können Ihnen die Entwicklerwerkzeuge des einge-
setzten Browsers zeigen, die in moderne Browser integriert sind (aufgerufen werden
sie in der Regel über (F12)).
Die Manipulation dieses DOM-Baums durch JavaScript war in der Vergangenheit von
Browser zu Browser leider nicht sehr standardisiert, und einige der Browser waren
daher unter Webentwicklern für ihre Eigenheiten regelrecht gefürchtet (der Internet
Explorer insbesondere), doch hat sich diese Situation, wie schon in Kapitel 2, »Grund-
lagen von APEX«, beschrieben), mittlerweile entspannt. Zudem wurden Frameworks
wie jQuery konzipiert mit dem Ziel, die Unterschiede zwischen den Browsern zu ver-
ringern und gleichzeitig eine leistungsfähige API für die häufigsten Anwendungsfälle
zu erstellen, um die Codemenge zu reduzieren.
Obwohl also optische Effekt mittlerweile auch relativ einfach mit den JavaScript-
Frameworks erstellt werden können, bieten sich dynamische Aktionen als deklarati-
ver Ersatz für die direkte Programmierung in JavaScript oder auch jQuery an, denn sie
lösen zusätzlich ein Problem, das Ihnen ansonsten größere Schwierigkeiten bereiten
würde: Dynamische Aktionen wissen, wie ein bestimmter Effekt in APEX erreicht wird.
Das mag zunächst so klingen, als sei APEX nicht standardkonform, doch meine ich das
nicht: Jede Webanwendung verfügt über ein eigenes System von CSS-Klassen, mit
dem die optische Darstellung gesteuert wird. Zwar etablieren sich auch hier gewisse
Standards (Bootstrap zum Beispiel), doch sind diese alles andere als verbindlich. Wel-
che Klassen APEX nun konkret einsetzt und durch welche Manipulationen ein Seiten-
element optisch anders dargestellt werden soll, weiß das APEX-Team am besten und
kann es vor allem auch von Version zu Version aktuell halten. Daher sollten Sie, wo
immer möglich, mit diesen Vorgaben arbeiten, um nicht bei Versionswechseln alle
eigenen Programmierungen an eine neue CSS-Landschaft anpassen zu müssen.
Zudem haben die APEX-Seitenbestandteile besondere Funktionen, die in normalen
Webanwendungen nicht vorhanden sind. Stellen Sie sich eine Berichtsregion vor, die
Sie aktualisieren wollen. Berichtsregionen existieren in anderen Anwendungen in
dieser Form nicht, daher kann es hier keinen übergreifenden Standard zur Aktualisie-
rung geben. Welcher Code ist hierfür erforderlich? Das möchten Sie nicht wirklich
(und vor allem nicht immer wieder) programmieren müssen, hierfür verwenden wir
eine dynamische Aktion.
Aus dem bisher Gesagten und Ihrer Erfahrung mit den dynamischen Aktionen, die
wir bislang in unserer Anwendung verwendet haben, ergibt sich, dass dynamische
Aktionen Folgendes definieren müssen:
� Wann soll etwas passieren?
Dies wird über die Bindung der dynamischen Aktion an ein Ereignis eines Seiten-
elements definiert.
� Was soll passieren?
Das steuern wir im Regelfall über den Typ der dynamischen Aktion.
4530.book Seite 534 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
535
15
� Welche Optionen sind für die Aktion erforderlich?
Einige Aktionen erfordern die Angabe weiterer Parameter. Soll zum Beispiel nach
der Auswahl einer Auswahlliste eine Region aktualisiert werden, muss angegeben
werden, welche Region aktualisiert werden soll.
15.1.2 Ereignisse und Typen dynamischer Aktionen
Wenn Sie eine dynamische Aktion auf einer Seite einrichten, muss diese an ein Er-
eignis, das auf der Seite auftritt, gebunden werden. Es ist daher ratsam, einmal ei-
nen Blick auf die verfügbaren Ereignisse zu werfen, an die wir die Ausführung
binden können. Betrachten Sie eine beliebige dynamische Aktion, zum Beispiel auf
<Anwendungsseite 4> � Element P4_JOB_ID in unserer Mitarbeiterverwaltung.
Die dynamische Aktion besteht aus zwei Eintragsarten unterhalb des Seitenelements
P4_JOB_ID, nämlich aus dem Namen der dynamischen Aktion selbst, in der das Ereig-
nis und das Seitenelement definiert werden, sowie aus den Untereinträgen mit
einem TRUE- und einem FALSE-Zweig. Sehen wir uns zunächst den Eintrag für die
dynamische Aktion selbst und die dort vorhandenen Attribute an.
Bereiche »ID« und »Ausführungsoptionen«
Abbildung 15.1 Attribute der Bereiche »ID« und »Ausführungsoptionen«
Das Attribut ID � Name stellt uns nicht vor Probleme, das ist ein Standardattribut. Die
Reihenfolge der Ausführung mehrerer dynamischer Aktionen auf ein gleiches Seiten-
element wird, wie auch andernorts üblich, über das Attribut Ausführungsoptio-
nen � Reihenfolge definiert.
Bereich »Wenn«
Abbildung 15.2 Attribute des Bereichs »Wenn«
4530.book Seite 535 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
536
Interessanter ist der Bereich Wenn. Hier wird das Ereignis definiert, zu dem die dyna-
mische Aktion ausgeführt werden soll. Wenn Sie sich das Attribut Wenn � Ereignis
ansehen, erhalten Sie eine längere Liste möglicher Ereignisse. Diese Ereignisse sind in
Gruppen organisiert, einige durch eckige Klammern hinter dem Namen gekenn-
zeichnet.
Abbildung 15.3 Liste der Ereignisse einer Dynamic Action
Der erste Bereich, Browserereignisse, fasst Ereignisse zusammen, die durch die
Bewegung auf der Seite oder durch Aktionen des Benutzers im Browser ausgelöst
werden. Das Ereignis Klick ist wohl selbsterklärend, andere Ereignisse eher nicht.
Zu der Liste, die aus meiner Sicht selbsterklärend sind, möchte ich die Ereignisse
Ändern (eine Auswahlliste oder ein Textfeld werden geändert), Klick, Doppelklick,
Taste …, Maustaste …, Scrollen und Auswählen (eine Zeile eines Berichts kann zum Bei-
spiel ausgewählt worden sein) zählen. Zu den anderen gebe ich Ihnen im Folgenden
kurze Erläuterungen.
Das Ereignis Seitenladevorgang ist von besonderer Bedeutung für dynamische Aktio-
nen. Dieses Ereignis wird ausgelöst, wenn die »relevanten« Seitenelemente vom Ser-
ver geladen und die Seite für den Browser »komplett« ist. Ich habe diese Begriffe in
Anführungszeichen gesetzt, weil sie nicht absolut zu verstehen sind. Eventuell müs-
sen noch Bilddaten nachgeladen werden, ebenso ist es möglich, dass noch asyn-
chrone Prozesse im Hintergrund ausgeführt werden, doch ist zu diesem Zeitpunkt
4530.book Seite 536 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
537
15
der DOM-Baum so weit komplett, dass mit den dynamischen Aktionen sinnvoll gear-
beitet werden kann. Ist die Seite so weit geladen und berechnet, wird dieses Ereignis
ausgelöst. Es ist das Standardereignis, wenn Sie eine dynamische Aktion ausführen
möchten, sobald die Seite verfügbar ist.
Sobald die Eingabemarke in ein Eingabefeld gesetzt wird, hat das entsprechende Sei-
tenelement den Fokus. Einfach gesagt, ist der Fokus also die Stelle, auf die sich Tasta-
tureingaben beziehen. Daher ist nachvollziehbar, dass sich der Fokus ändern kann.
Erhält ein Eingabefeld den Fokus, wird das Ereignis Fokus erhalten ausgelöst, verliert
es den Fokus, wird analog das Ereignis Fokus verlieren ausgelöst. Dabei ist es uner-
heblich, ob die Navigation auf der Seite über den Klick auf ein Seitenelement oder die
(ê)-Taste erfolgt. Aber an diesem Beispiel lässt sich die Reihenfolge der Ereignisse
ganz gut erläutern. Stellen wir uns vor, Sie klickten in ein Eingabefeld, dann wären bis
zu diesem Klick mindestens die folgenden Ereignisse aufgetreten:
� Maus bewegen, und zwar sehr oft, denn jede Koordinatenänderung (und sei es nur
um einen Bildschirmpunkt) löst ein entsprechendes Ereignis aus. Diese Ereignisse
sind nicht an ein Seitenelement gebunden, sondern nur an die Maus.
� Mauseintritt. Sobald der Mauszeiger den Bereich erreicht hat, den unser Eingabe-
feld umspannt, wird dieses Ereignis ausgelöst. Dieses Ereignis wird nicht auf die
Maus, sondern auf das Eingabefeld bezogen ausgelöst. Solange der Mauszeiger
sich über dem Eingabefeld befindet, ist zudem der Schalter hover aktiv, der von
CSS ausgewertet werden kann und zum Beispiel die Hintergrundfarbe eines Einga-
beelements ändert.
� Maustaste drücken. Nun wird es zeitlich enger, denn dieses Ereignis wird ausgelöst,
sobald Sie die Maustaste drücken. Das ist nicht immer das Ereignis, das Sie interes-
siert, denn wir wissen ja noch nicht, was nun passiert. Wird die Maustaste gedrückt
gehalten und das Element mit Drag & Drop bewegt, wird einmal oder doppelt
geklickt? Um das zu entscheiden, reicht dieses Ereignis nicht aus.
� Maustaste loslassen. Analog zum vorhergehenden Klick ist auch dieses Ereignis
für die Programmierung viel seltener interessant als die folgenden Ereignisse, die
sozusagen auf höherer Ebene stattfinden, denn hier wird lediglich gemeldet, dass
die Maustaste losgelassen wurde.
� Klick, Doppelklick. Diese Ereignisse werten die Benutzung der Maus aus und mel-
den die entsprechende Aktion. Diese Ereignisse werden sehr oft für die Program-
mierung von dynamischen Aktionen verwendet.
� Bewegen Sie die Maus anschließend aus dem Eingabefeld hinaus, werden noch die
analogen Ereignisse Mausaustritt, Maus bewegen etc. ausgelöst.
Wenn Sie sich die Vielzahl der Ereignisse vergegenwärtigen, die durch den Browser
ausgelöst werden, könnte Ihnen schon einmal der Überblick über die richtige Rei-
4530.book Seite 537 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
538
henfolge sowie das richtige Ereignis abhandenkommen. Für den Anfang sollten Sie
sich daher an die bekannteren Ereignisse Klick, Doppelklick, Ändern etc. halten.
Dann existieren noch Ereignisse, die durch APEX ausgelöst werden. In der deutschen
Übersetzung sprechen wir hier von Framework-Ereignissen. Diese Ereignisse sind also
APEX-spezifisch und beziehen sich auf Aktivitäten, die mit der Datenverarbeitung
zusammenhängen (Vor Seitenweiterleitung, Vor und Nach Aktualisierung) sowie auf
das speziellere Ereignis Dialog geschlossen, das ausgelöst wird, wenn eine modale
Seite geschlossen und die Kontrolle an die Hauptseite zurückgegeben wird. Diese
Klasse von Ereignissen ist insofern typisch, als Erweiterungen, ob nun vom APEX-
Team programmiert oder von Ihnen, immer auch eigene Ereignisse definieren und
auslösen können. Diese zusätzlichen Ereignisse können Sie auch auf <Anwen-
dungsseite 3> sehen, und zwar sind das die Einträge mit eckigen Klammern als
Ergänzung zum Ereignisnamen. In den Klammern wird angegeben, welche Erweite-
rung die Ereignisse vereinbart hat, im Beispiel die Erweiterungen Kalender, Interak-
tives Grid, Shuttle, Slider und Timer.
Nach der Auswahl des Ereignisses, auf das die dynamische Aktion reagieren soll, wird
anschließend festgelegt, durch welches Element das Ereignis ausgelöst worden sein
muss, damit die dynamische Aktion reagiert. Die Eintragungen dieser Auswahlliste
hängen vom gewählten Ereignis ab und sind daher zu umfangreich für eine kom-
plette Besprechung. Daher auch hier nur einige Ausschnitte. Klicken, Auswählen und
Ändern können Sie sehr viele Elemente, während das Ereignis Seitenladevorgang nur
für das gesamte Dokument sinnvoll ist und daher keine weitere Einschränkung
erlaubt. Angenehm ist, dass die einzelnen Ereignisse durch Auswahllisten näher spe-
zifiziert werden, denn so sind Fehleingaben letztlich ausgeschlossen, wenn auch
nicht alle Kombinationen, die möglich sind, auch sinnvoll sind.
Bereich »Clientseitige Bedingung«
Abbildung 15.4 Attribute des Bereichs »Clientseitige Bedingung«
Die Attribute dieses Bereichs stellen Bedingungen bereit, die ausgewertet werden,
um zu entscheiden, was das Auslösen der dynamischen Aktion konkret bewirken
4530.book Seite 538 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
539
15
soll. Die verschiedenen Bedingungstypen erklären sich von selbst und lehnen sich an
die serverseitigen Bedingungstypen an, die wir bereits kennen. Im Beispiel wird
geprüft, ob das Element P4_JOB_ID aktuell einen Wert aus der Liste SA_MAN, SA_REP ent-
hält. Ist dies der Fall, wird die Aktion ausgeführt, die im TRUE-Zweig der dynamischen
Aktion enthalten ist, ansonsten die Aktion des FALSE-Zweigs. Wichtig ist, zu verste-
hen, dass hier nicht der Sessionstatus, sondern der aktuelle Elementwert zum Zeit-
punkt der Änderung der Auswahlliste gemeint ist. Dadurch ist es möglich, direkt auf
die Benutzereingaben zu reagieren. Und wo wir bereits beim Thema sind: Die Ände-
rung eines Seitenelements hat im Regelfall auf den Sessionstatus keine Auswirkung,
es sei denn, die dynamische Aktion würde den Wert in die Datenbank kopieren. Im
Beispiel ist das aber nicht der Fall.
Bereich »Erweitert«
Abbildung 15.5 Attribut des Bereichs »Erweitert«
Dieser Bereich ist normalerweise für Sie nicht von Interesse und muss nur in selte-
nen Fällen geändert werden. Die Option steuert das Verhalten von dynamischen
Aktionen, wenn die Elemente, auf die sie sich beziehen, nicht schon beim initialen
Laden der Seite vorhanden sind oder durch ein teilweise erneutes Laden im DOM-
Baum ersetzt wurden. Leider ist es nicht zu verhindern, dass wir in Bezug auf Java-
Script immer einmal wieder Ausflüge unternehmen müssen, um Dinge zu erklären,
die letztlich nur selten auftreten. Das ist auch hier der Fall. Überspringen Sie daher
einfach diesen Abschnitt, wenn Sie sich zunächst nur einen Überblick verschaffen
möchten.
Dynamisches HTML, also manipulierte DOM-Bäume, sind die Spielwiese von Java-
Script. Sie binden an ein Element des DOM-Baums einen Eventhandler, also einen
Code, der auf das Auftreten eines Ereignisses wartet. Dies setzt voraus, dass das Ele-
ment, auf das sich der Eventhandler bezieht, auch vorhanden ist. Das ist im Regelfall
auch so, schließlich haben Sie die Elemente angelegt. Doch was ist, wenn Sie zum Bei-
spiel auf den Klick auf eine Zeile eines Berichts reagieren möchten und dieser Bericht
wird durch eine Paginierung neu geladen, ohne die gesamte Seite neu zu laden? Der
Code wird im Hintergrund die DOM-Baum-Elemente, die als Zeilen des Berichts dar-
gestellt werden, wegwerfen und durch neue Elemente ersetzen. Mit dem Löschen der
alten Zeilen werden aber auch die Eventhandler entsorgt, die Funktionalität, die Sie
4530.book Seite 539 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
540
erreichen wollten, funktioniert nur einmal, nach einer Aktualisierung des Berichts
aber nicht mehr.
An dieser Stelle greift dieses Attribut ein. Es bietet Ihnen die Möglichkeit, Eventhand-
ler statisch, dynamisch oder nur einmal an die vorhandenen Seitenelemente zu bin-
den. Der Unterschied:
� Beim statischen Binden (Attributwert Static) wird das Ereignis an ein Seitenele-
ment gebunden. Wird dieses Element durch eine Aktualisierung ersetzt, ist das
Ereignis nicht mehr an das Seitenelement gebunden.
� Beim dynamischen Binden (Attributwert Dynamisch) ist dies nicht der Fall, nach der
Aktualisierung des Seitenelements wird der Eventhandler erneut an das Seitenele-
ment gebunden.
� Beim einmaligen Binden wird der Eventhandler nach dem ersten Auslösen vom
Seitenelement entfernt. Dadurch wird eine dynamische Aktion maximal einmal
ausgeführt, es sei denn, Sie laden die gesamte Seite erneut.
Hintergrund: Delegate
Noch einmal technischer wird es, wenn wir eine andere Strategie betrachten. Die
Optionen, die ich in der Strichaufzählung erläutert habe, können noch durch eine
andere Strategie erweitert werden. Die Region, die in unserem Beispiel einen Bericht
enthält, der durch eine Paginierung aktualisiert wurde, bleibt als Region natürlich
erhalten, nur der Inhalt der Region wird ersetzt.
Was also wäre, wenn der Ereignishandler nicht zum Beispiel an die einzelne Berichts-
zeile, sondern an die umgebende Region gebunden würde? Dann bliebe der Ereignis-
handler auch im Fall einer Aktualisierung der Region erhalten, zudem benötigen wir
in diesem Fall nur einen einzigen Ereignishandler und nicht je einen pro Berichts-
zeile. Allerdings muss diesem Ereignishandler nun mitgeteilt werden, dass er nicht
auf einen Klick auf die Region reagieren soll, sondern ein Ereignis bearbeiten soll, das
hierarchisch unter der Region ausgelöst wurde. Um dies zu erreichen, benötigt der
Ereignishandler ein Kriterium, um zu entscheiden, ob ein Klick-Ereignis innerhalb der
Region für den Handler interessant ist oder nicht. Hier wird normalerweise ein
jQuery-Selektor eingesetzt, der zum Beispiel immer dann reagiert, wenn das Klick-
Ereignis aus einem Element TR ausgelöst wurde. Noch abgefeimter wird es, wenn
eine CSS-Klasse zum Erkennen relevanter Ereignisse eingesetzt wird, denn nun wäre
es möglich, nur für bestimmte Zeilen des Berichts eine Aktion zu implementieren,
andere Zeilen jedoch tun einfach nichts.
Ein solcher Ereignishandler wird als Delegate bezeichnet und wurde früher auch über
eine so benannte Funktion in jQuery vereinbart. Mittlerweile wird in jQuery die gene-
rische Funktion ON für diese Zwecke verwendet, die im Fall eines Delegates einen
zusätzlichen Parameter für den jQuery-Selektor erwartet. Aus Sicht einer dynami-
schen Aktion ist ein solches Delegate dadurch einzurichten, dass im Attribut Betrof-
4530.book Seite 540 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
541
15
fene Elemente � Auswahltyp der Wert jQuery-Selektor gesetzt und dieser Selektor
im Attribut Betroffene Elemente � jQuery-Selektor gesetzt wird.
Sie ahnen es schon: Der Möglichkeiten sind viele, je nach unterschiedlichen Program-
miererskills werden wohl auch unterschiedliche Ansätze implementiert. Haben Sie
solche unterschiedlichen Skills in Ihrem Team, führt kein Weg daran vorbei, mitein-
ander über solche Dinge zu sprechen und eine Strategie für die Verwendung fest-
zulegen, ansonsten wird kein Kollege die Anwendung eines anderen Kollegen ver-
stehen können.
Weitere Attributbereiche
Die weiteren Attributbereiche sind Standardattribute ohne Besonderheiten gegen-
über anderen Seitenelementen. Mit den Attributen kann kontrolliert, werden, ob
eine dynamische Aktion überhaupt Teil der Anwendungsseite sein soll, sie kann an
Autorisierungsschemata gebunden werden oder für ein Release ausgeschlossen wer-
den. Die Besprechung dieser Attribute ergibt keinen weiteren Erkenntnisgewinn,
deshalb möchte ich es dabei belassen. Ich wiederhole nur abschließend den Gedan-
ken, dass Sie durch serverseitige Bedingungen steuern, ob eine dynamische Aktion
überhaupt Teil der Anwendungsseite ist, während clientseitige Bedingungen kon-
trollieren, ob eine dynamische Aktion, die immer Teil der Seite ist, auch ausgeführt
werden soll.
15.1.3 Aktionen
Kommen wir nun zu dem, was die dynamischen Aktionen tatsächlich tun. Wie
gesagt, kann für eine dynamische Aktion eine Bedingung angegeben werden, um zu
entscheiden, ob die eine oder die andere Alternative ausgeführt werden soll. Aktio-
nen verfügen zudem noch über die Option, in jedem Fall beim Seitenladen ausge-
führt zu werden. Dies ist praktisch, um zum Beispiel sicherzustellen, dass ein
Seitenelement nach dem Laden der Seite ausgeblendet wird, obwohl überhaupt kein
Ereignis aufgetreten ist, um zu berechnen, ob das Element dargestellt werden soll
oder nicht. In unserem Beispiel auf <Anwendungsseite 4> hatten wir diese Option
verwendet, um sicherzustellen, dass wir korrekt auf den Beruf des Mitarbeiters
reagieren. Wird die Seite geladen, könnte der dargestellte Mitarbeiter einen Beruf der
angegebenen Liste haben oder auch nicht.
Da aber die Auswahlliste gar nicht verändert wurde, würde die dynamische Aktion
nicht berechnet. Legen Sie im Attribut Ausführungsoptionen � Bei Initialisie-
rung auslösen festlegen fest, dass diese Aktion in jedem Fall auch beim Ereignis
Seitenladen ausgelöst werden soll, wird das Element korrekt ein- oder ausgeblendet.
4530.book Seite 541 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
542
Bereich »Ausführungsoptionen«
Doch egal, wie, in jedem Fall wird, wenn etwas ausgeführt werden soll, eine Aktion
ausgeführt. Diese Aktionen haben wiederum einen Typ und kapseln letztlich wesent-
liche Teile des JavaScript-Codes. Allen Aktionstypen gemeinsam sind einige Attri-
bute, die wir für jede Aktion definieren können, andere sind spezieller auf die
jeweiligen Aktionstypen angepasst. Die gemeinsamen Attribute sind im Bereich
Ausführungsoptionen gesammelt.
Abbildung 15.6 Attribute des Bereichs »Ausführungsoptionen«
Dort findet sich das bereits erläuterte Attribut Ausführungsoptionen � Bei Initi-
alisierung auslösen ebenso wie die folgenden Attribute:
� Reihenfolge
Steuert die Reihenfolge, in der die Aktionen ausgeführt werden sollen. Die Reihen-
folge ist sehr wichtig und muss von Ihnen sorgsam kontrolliert werden, damit die
gesamte Aktion korrekt funktioniert.
� Ereignis
Das ist eine Referenz auf das Ereignis, das wir bereits definiert haben. Mittels die-
ser Referenz kann eine Aktion zwischen verschiedenen Ereignissen (und damit
dynamischen Aktionen) verschoben werden, ähnlich, wie ein Seitenelement zwi-
schen Regionen verschoben werden kann.
� Auslösen, wenn das Ereignisergebnis wie folgt ist
Wenn ein Test für das Ereignis definiert wurde, kann das Ergebnis Wahr oder Falsch
sein. Hier wird festgelegt, welchem Ergebnis die Aktion zugeordnet werden soll. Ist
keine Prüfung definiert, wird immer ausgeführt, was im Zweig Wahr steht.
Aktionstypen
Die verschiedenen Aktionstypen, die wir im Attribut ID � Aktionstyp festlegen, wer-
den wir uns in der Folge genauer ansehen, denn sie stellen letztlich die zentrale Kom-
ponente der dynamischen Aktionen dar. Auch die Aktionstypen sind in Kategorien
organisiert, und ich möchte mich ebenfalls an dieser Kategorisierung orientieren.
4530.book Seite 542 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
543
15Abbildung 15.7 Aktionstypen dynamischer Aktionen
Bereich »Ausführen«
Die beiden Optionen dieses Bereichs sind für fortgeschrittene APEX-Entwickler
gedacht. Hier können Sie entweder clientseitigen (JavaScript-Code ausführen) oder
serverseitigen (PL/SQL-Code ausführen) Code definieren, der anschließend ausgeführt
wird. Natürlich verlieren Sie die meisten Vorteile dynamischer Aktionen, wenn Sie
selbst in JavaScript tätig werden müssen, doch ist es manchmal unumgänglich,
schon allein deshalb, weil das APEX-Team natürlich nicht alle Eventualitäten voraus-
sehen kann.
Wird PL/SQL-Code ausgeführt, stellt sich direkt die Frage, wie das eigentlich funktio-
nieren soll. Schließlich befinden wir uns im lokalen Browser, und die Datenbank ist ein
Netzwerk weit entfernt. Baut die dynamische Aktion also eine Datenbankverbindung
auf, um den Code auszuführen? Natürlich nicht, schon allein, weil nirgendwo die Ver-
bindungsdaten zur Datenbank hinterlegt sind. Wenn PL/SQL-Code ausgeführt wird,
geschieht dies so, dass ein Request über einen einfachen URL an die Datenbank
gestellt wird. Die Methode, die ausgeführt werden soll, wird über eine APEX-Funktion
zur Verfügung gestellt. Die Details sind relativ komplex und gehen noch über das hin-
aus, was ich erläutern möchte (das machen wir in Kapitel 16, »Plugins«), doch wird
über den Request die Information an die Datenbank gegeben, dass der hinterlegte PL/
SQL-Code ausgeführt werden soll. Interessant ist dabei, dass bei dieser Anfrage auch
eine Liste von Seitenelementen festgelegt werden kann, die bei dieser Gelegenheit
4530.book Seite 543 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
544
direkt in den Sessionstatus kopiert werden sollen. Das wäre dann die im vorhergehen-
den Abschnitt angesprochene Ausnahme von der Tatsache, dass eine dynamische
Aktion keine Auswirkung auf den Sessionstatus hat, denn wenn Sie Seitenelemente
für die Übernahme definieren, wird eine Änderung eines Elements auf der Seite auch
den Sessionstatus tangieren. Ist die Not groß, kann man den PL/SQL-Code null; aus-
führen und einige Seitenelemente mitliefern, um vor einer weiteren Aktion Seitenele-
mente in den Sessionstatus zu kopieren. So etwas werden Sie immer mal wieder in
Beispielanwendungen oder Blogeinträgen im Internet sehen. Richtig guter Stil ist das
aber nicht und sollte im Normalfall auch nicht nötig sein. Da und dort sieht man in
diesen Fällen als PL/SQL-Code übrigens auch schon einmal begin null; end;, doch ist
das nicht erforderlich, der anonyme Block wird von APEX automatisiert ergänzt.
Ideal ist die Option PL/SQL-Code ausführen geeignet, um Packages innerhalb der
Datenbank aufzurufen, weil damit die Funktionalität gekapselt ist, der Name der auf-
gerufenen Methode zudem noch eine gute Dokumentation der geplanten Aktivität
ermöglicht und die Codemenge auf der Seite gering ist. Auch in diesem Fall stellt sich
die Frage, die wir schon in Kapitel 10, »Seitenelemente und Schaltflächen«, bezüglich
der richtigen Übergabe von Parametern aufgeworfen hatten. Beide Szenarien (Para-
meter der Prozedur, direkter Zugriff auf den Sessionstatus) sind prinzipiell denkbar.
Beachten Sie aber, dass die Angabe eines Elementnamens als Parameterwert nicht
ausreichen wird, selbst dann nicht, wenn sie in der Notation :P1_EMP_ID übergeben
würde: Der PL/SQL-Code hat keinen Zugriff auf den Zustand des Elements auf der
Seite, sondern nur auf den Sessionstatus. Da der Prozess aber nicht im Rahmen der
Verarbeitung der gesamten Seite aufgerufen wird (in diesem Fall hätte ja APEX alle
aktuellen Elementwerte in den Sessionstatus kopiert), sondern daran vorbei, müssen
Sie daran denken, dem Aufruf die benötigten Seitenelemente über eine komma-
separierte Liste im Attribut Einstellungen � Weiterzuleitende Elemente zu
übergeben.
Berechnet der PL/SQL-Code Werte, die Sie anschließend auf der Seite benötigen,
muss zweierlei sichergestellt sein:
� Der Wert muss durch den PL/SQL-Code in den Sessionstatus geschrieben worden
sein. Dies geht über das Package APEX_UTIL.SET_SESSION_STATUS.
� Das Element, dessen Wert durch den PL/SQL-Code in der Datenbank geändert
wurde, muss im Attribut Einstellungen � Zurückzugebende Elemente aufge-
führt werden. Dies führt dazu, dass der Wert beim Abschluss der Anfrage mit an
den Browser übermittelt und von diesem in den DOM-Baum integriert wird.
In diesem Licht ist auch verständlich, woher der »Trick« kommt, Elementwerte der
Anwendungsseite in den Sessionstatus zu kopieren: Sie werden dem PL/SQL-Code
mitgegeben, der Code selbst tut aber einfach nichts.
4530.book Seite 544 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
545
15
Bereich »Benachrichtigung«
Deutlicher einfacher anzuwenden und zu verstehen sind die Optionen dieses
Bereichs, hier werden Meldungen generiert, die dem Benutzer gezeigt werden. Klas-
sische Meldungen sind Warnmeldungen über Fehler und Bestätigungsmeldungen,
zum Beispiel vor dem Löschen von Daten. Die meisten Leser, die schon mit JavaScript
gearbeitet haben, werden hier einen Wrapper um die JavaScript-Funktion alert ver-
muten und haben damit auch Recht. Seit Version 5.1 ist dies allerdings nicht mehr
selbstverständlich, denn es ist eine neue JavaScript-API für Meldungen eingeführt
worden, die im Namensraum apex.message angesiedelt ist.
Hintergrund
Die Umstellung auf apex.message wurde erforderlich durch das interaktive Grid. Die
Komplexität der lokalen Datenhaltung war nicht mehr kompatibel mit dem alten
System, beim Verarbeiten der Seiten alle Daten an den Server zu schicken und dort
die Validierungen durchzuführen. Stattdessen muss die Validierung durch einen
AJAX-Aufruf ausgeführt werden, damit der Status der lokal angezeigten Seite erhal-
ten bleibt. Diese Änderung hat auch mit sich gebracht, dass nun Fehler, die bei der
Validierung auftreten, dynamisch angezeigt werden können müssen. Um diese Feh-
ler anzuzeigen, wurde der Namensraum eigentlich eingeführt. Die Meldungen über
dieses System zu steuern lag daher nahe.
Allerdings ist vor einem einfachen Ersatz der generischen alert-Methode durch das
Pendant apex.message.alert zu warnen, denn es gibt einen Paradigmenwechsel:
Die alte alert-Methode ist synchron, sie wartet mit der Ausführung von JavaScript-
Code, bis eine Reaktion des Benutzers vorliegt. Dies ist mit der neuen API nicht der
Fall: Hier wird ein sogenanntes Callback eingesetzt, also ein asynchrones Verfahren,
das den Dialog erzeugt, anschließend aber direkt mit der Ausführung des JavaScript-
Codes fortfährt. Genaueres finden Sie in Abschnitt 15.2.1, »Einführung in JavaScript«.
Die neue API basiert auf einem jQuery Widget, und zwar dialog. Der Vorteil liegt
darin, dass diese Benachrichtigungen optisch einfacher zu kontrollieren sind und
sich daher besser in die allgemeine Benutzerführung integrieren. Zudem ist nur mit
einer direkt kontrollierten Ressource wie dem dialog möglich, ein asynchrones Ver-
halten zu implementieren, wie im Hintergrund erläutert.
Der Unterschied zwischen Alert und Bestätigen liegt einfach darin, dass beim Alert
lediglich eine OK-Schaltfläche angeboten wird, während beim Bestätigen noch eine
Abbrechen-Schaltfläche integriert wird. Die angekündigte Aktion wird nur dann
durchgeführt, wenn auf die Schaltfläche OK geklickt wird. Beide dynamische Aktio-
nen erfordern die Angabe eines Textes im Attribut Einstellungen � Text, der dann
auf der Oberfläche dargestellt wird. Dieser Text ist kein HTML-Text, denn er wird
nicht durch HTML, sondern durch JavaScript dargestellt. Aus diesem Grund ist keine
HTML-Auszeichnung, wie etwa ein Zeilensprung mittels des Elements <br> möglich,
4530.book Seite 545 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
546
sondern hier sind JavaScript-Steuerzeichen erforderlich, wie etwa \n für eine neue
Zeile.
Bereich »Komponente«
Aktionen des Bereichs Komponente beziehen sich auf die Manipulation von Seitenele-
menten, wie etwa dem Anzeigen oder Verbergen von Eingabefeldern. In diesem Licht
sind die verschiedenen Aktionstypen wohl weitestgehend selbsterklärend. Kurze Hil-
fetexte in der Online-Hilfe tun ihr Übriges. Alle Aktionen dieses Bereichs erfordern
daher auch die Angabe eines betroffenen Elements durch Attribute im Bereich
Betroffene Elemente, einige zudem noch die Angabe weiterer Attribute. Diese
sehen wir uns in der Folge dann genauer an.
Abhängig vom Aktionstyp hat die Festlegung des betroffenen Elements im Attribut
Betroffene Elemente � Auswahltyp eine unterschiedliche Reichweite. Alle Aktio-
nen, mit Ausnahme der Aktionen, die sich auf die Baumstrukturen beziehen, können
dabei zwischen folgenden Optionen wählen:
� Elemente
Diese Option wirkt sich auf ein oder mehrere Seitenelemente aus. Das Seitenele-
ment muss im Attribut Betroffene Elemente � Elemente angegeben werden.
Möchten Sie eine Festlegung für mehrere Elemente, werden diese durch Kommata
getrennt in dieses Attribut eingetragen.
� Region
Ist eine Region betroffen, muss diese ausgewählt werden. Hier ist es nicht möglich,
gleichzeitig mehrere Regionen anzusprechen. Zudem ist nicht immer sicherge-
stellt, dass alle Regionen alle Aktionstypen unterstützen. Einige Regionen unter-
stützen zum Beispiel den Aktionstyp Aktualisieren, der verwendet wird, um eine
Region erneut berechnen zu lassen (Berichtsregionen), andere nicht (statische
Regionen).
� Spalte(n)
Diese Option bezieht sich auf Spalten eines interaktiven Grids. Da auch diese »nor-
male« Seitenelemente beinhalten, können sich auch die dynamischen Aktionen
genauso auf die Spalten beziehen. Selbst programmierte Seitenelemente werden
ebenfalls unterstützt, benötigen aber eine gewisse JavaScript-API hierfür, die in
Version 5.1 erweitert wurde.
� jQuery-Selektor
Dies ist ein fortgeschrittenes Thema. Wir werden uns JavaScript im nächsten
Abschnitt zuwenden, und ich werde dann auch Genaueres dazu sagen, doch im
Moment nur so viel: Es handelt sich um einen JavaScript-Ausdruck, der von
jQuery interpretiert und zu einem oder mehreren Zielen ausgewertet wird, auf die
die Aktion dann angewendet wird. Typischerweise werden hier entweder Element-
4530.book Seite 546 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
547
15
IDs oder Element-CSS-Klassen referenziert, seltener auch einmal name-Attribute
oder anderes.
� JavaScript-Ausdruck
Ganz ähnlich wie im vorhergehenden Gliederungspunkt bezieht sich auch diese
Option auf eine fortgeschrittene Technik der Auswahl von Seitenelementen, nur
diesmal nicht durch einen jQuery-Ausdruck, sondern durch einen JavaScript-Aus-
druck.
� Auslösendes Element
In diesem Fall wird die Änderung auf das Element ausgeführt, das das Ereignis
auch ausgelöst hat. So naheliegend dies klingt, so selten ist diese Option erforder-
lich. Meistens werden Elemente in Abhängigkeit von anderen Seitenelementen
manipuliert.
� Ereignisquelle
Dies ist eine ebenso komplexe wie interessante Option. Sie bezieht sich auf die
Fähigkeit von JavaScript, Ereignisse, dem hierarchischen DOM-Baum bis zum
Wurzelelement folgend, weiterzureichen. Wird ein Element also zum Beispiel auf
einer Zeile eines Berichts ausgelöst, wird dieses Ereignis zum Bericht, zur umge-
benden Region, zum body-Element und letztlich zum Wurzelelement des DOM-
Baums propagiert. Manchmal ist es vor diesem Hintergrund effizienter, eine
dynamische Aktion etwas »höher zu hängen«. Damit meine ich, dass eine dynami-
sche Aktion nicht an jeder einzelnen Zeile eines Berichts gebunden sein muss,
sondern zum Beispiel an die umgebende Berichtsregion. Dies ist deshalb effizien-
ter, weil nun ein Ereignishandler viele gleichartige Ereignisse des gesamten
Berichts überwacht. Zudem bleibt dieses Ereignis an der Region auch dann beste-
hen, wenn die Zeilen durch eine Aktualisierung ersetzt werden. Die Aktion aller-
dings muss sich natürlich immer auf die tatsächlich auslösende Zeile beziehen
und nicht auf die Region als Ganzes. Daher ist es erforderlich, eine Referenz auf das
auslösende Element zu erhalten, und dieses Element ist mit der Option Ereignis-
quelle gemeint: Die tatsächlich auslösende Zeile eines Berichts zum Beispiel,
obwohl das Ereignis eigentlich an die umgebende Berichtsregion bindet.
Wie beschrieben, erfordern einige Aktionstypen die Angabe weiterer Attribute. So ist
zum Beispiel der Aktionstyp Wert festlegen mit weiteren Attributen im Bereich Ein-
stellungen ausgestattet. Lassen Sie uns an diesem Beispiel die verschiedenen Attri-
bute durchsprechen, in der Folge erklären sich die anderen Optionen dann wohl von
allein.
Ist also das Attribut ID � Aktion � Wert festlegen gesetzt, wird der Bereich Einstel-
lungen mit weiteren Attributen gezeigt. Das Attribut Einstellungen � Typ festle-
gen definiert, auf welche Weise der Wert für das betroffene Element generiert
werden soll. Einfach ist die Option Static Assignment, denn hier muss lediglich im
4530.book Seite 547 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
548
Attribut Einstellungen � Wert ein statischer Wert eingetragen werden. Das zusätz-
liche Attribut Einstellungen � Änderungsereignis unterdrücken bezieht sich
darauf, dass die Festlegung eines Wertes beim betroffenen Element ein Ändern-Ereig-
nis auslöst. Dies wiederum könnte weitere dynamische Aktionen auslösen, bis hin zu
Schleifen, aus denen sich der Browser nicht mehr befreien kann. Hier greift dieses
Attribut ein, denn es unterdrückt das Auslösen des Ändern-Ereignisses. Greifen Sie in
den normalen Ereignisfluss aber bitte nicht ohne Not ein, es gilt als Verstoß gegen
eine Best Practice, da spätere Erweiterungen nicht damit rechnen, dass diese Ereig-
nisse unterdrückt werden. Manchmal kann man sich aber nicht ohne solche Optio-
nen aus einer Notlage befreien, und dann ist der Weg über dieses Attribut sicher der
alternativen Lösung mittels JavaScript-Funktion vorzuziehen.
Alternativ kann der Elementwert auch über andere Verfahren ermittelt werden:
� JavaScript Expression
Diese Option berechnet den neuen Elementwert mithilfe eines JavaScript-Aus-
drucks, der in das Attribut Einstellungen � JavaScript-Ausdruck eingefügt
werden muss.
� SQL Statement
Diese Option macht einen Roundtrip zum Server, führt dort eine SQL-Abfrage aus
und gibt das Ergebnis an das oder die betroffenen Elemente weiter. Hier ist es oft-
mals erforderlich, Filterwerte für die SQL-Abfrage mittels des Attributs Einstel-
lungen � Weiterzuleitende Elemente zu übermitteln, weil ansonsten der
Sessionstatus den aktuellen Wert des Elements nicht kennt und falsche Ergebnisse
der SQL-Abfrage die Folge wären.
Die Option Einstellungen � Escape bei Sonderzeichen bezieht sich darauf,
dass das Ergebnis der SQL-Abfrage durchaus auch HTML-Code enthalten könnte,
der, würde er geschützt, so umgebaut würde, dass der beabsichtigte optische
Effekt nicht eintreten kann. In diesen Fällen kann das Attribut auf Nein eingestellt
werden. Diese Einstellungen erhöht aber potenziell die Gefahr, dass eingeschmug-
gelter JavaScript-Code ausgeführt wird.
� PL/SQL Expression / PL/SQL Function Body
Analog zum vorhergehenden Gliederungspunkt ist es möglich, den Elementwert
auch durch einen PL/SQL-Ausdruck oder einen Funktionskörper zu berechnen.
Beschränken Sie sich hier auf Funktionsaufrufe oder PL/SQL-Einzeiler. Überlegen
Sie zudem, ob der gewünschte Zweck nicht auch durch einen JavaScript-Ausdruck
ausgeführt werden könnte, und ziehen Sie diese Möglichkeit vor, denn sie erfor-
dert keinen Roundtrip zur Datenbank und ist daher schneller.
� Dialog Return Item
Diese Option ist sehr interessant für die Behandlung modaler Dialoge. Wenn ein
modaler Dialog geschlossen wird, kann beim Schließen ein Objekt erstellt werden,
4530.book Seite 548 Donnerstag, 7. September 2017 3:59 15
15.1 Verwendung von dynamischen Aktionen
549
15
das über das Framework-Ereignis � Dialog geschlossen an die aufrufende Seite
übermittelt wird. Dieses übergebene Element kann mit diesem Typ referenziert
und in ein lokales Element übernommen werden. Wie das geschieht, beschreibe
ich im nächsten Abschnitt beim ID � Typ � Dialog schließen. Wählen Sie diese
Option, wird Ihnen ein Attribut Einstellungen � Rückgabeobjekt angeboten,
in dem Sie den Namen des Seitenelements eintragen, dessen Wert in das Rückga-
beobjekt übernommen werden soll.
Eine weitere Option lässt sich noch festlegen, wenn Elemente angezeigt oder ausge-
blendet werden sollen. Das Attribut Einstellungen � Alle in derselben Zeile
anzeigen/verbergen definiert, wie mit Seitenelementen einer HTML-Zeile umge-
gangen werden soll. Diese Option ist für das Universal Theme nicht von Interesse,
sondern funktioniert nur mit alten Templates, die eine Seitenstrukturierung durch
eine Tabelle erreichten. Daher sollte dieses Attribut im Regelfall auf Nein eingestellt
bleiben.
Bereich »Navigation«
Die Aktionstypen dieses Bereichs konzentrieren sich auf das Schließen bzw. Abbre-
chen modaler Dialoge sowie auf die Weiterleitung der aktuellen Seite.
Im vorhergehenden Abschnitt war die Rede vom Attribut ID � Aktion � Dialog Return
Item. Dieses Attribut legte fest, dass der von einem modalen Dialog zurückgegebene
Wert hierher kopiert werden soll. Zu diesem Typ ist der Aktionstyp Dialog schließen
das logische Gegenstück. Wählen Sie diesen Aktionstyp, wird Ihnen ein Attribut Ein-
stellungen � Zurückzugebende Elemente angeboten, in das Sie eine Liste von
Seitenelementen eintragen können, deren Werte an die aufrufende Seite übermittelt
werden sollen. Auf der aufrufenden Seite nehmen dann dynamische Aktionen vom
Typ Wert festlegen, Dialog Return Item jeweils einen Wert der übergebenen Liste ent-
gegen und kopieren diesen in die betroffenen Seitenelemente. Der Aktionstyp Dialog
abbrechen hat keine weiteren Optionen, löst aber ein Ereignis Dialog geschlossen aus,
auf das mit weiteren dynamischen Aktionen auf der aufrufenden Seite reagiert wer-
den kann.
Interessant ist der Aktionstyp ID � Seite weiterleiten. Mit dieser Aktion kann die Ver-
arbeitung der Seite veranlasst werden. Dies ist auch über eine JavaScript-Funktion
möglich, die wir bereits kennengelernt haben. Wenn Sie nämlich ein Seitenelement
löschen möchten, hat dies folgenden Verweis innerhalb der Schaltfläche zur Folge:
javascript:apex.confirm(htmldb_delete_message,'DELETE');
Listing 15.1 URL einer Löschen-Schaltfläche
Aus dem URL erkennen wir, dass eine JavaScript-Funktion aus dem Namensraum
apex.confirm aufgerufen wird, die als Parameter eine generische Meldung (als Wert
4530.book Seite 549 Donnerstag, 7. September 2017 3:59 15
15 Dynamische Aktionen
550
der Variablen htmldb_delete_message) sowie einen Requestwert übermittelt. Ist die
Bestätigung des Dialogs positiv, wird die Seite mit dem angegebenen Requestwert
weitergeleitet. Hinter den Kulissen wird dies über die JavaScript-Funktion apex.sub-
mit(request) durchgeführt, die letztlich auch über die hier besprochene dynamische
Aktion ausgelöst werden kann.
Allerdings bietet die dynamische Aktion noch zwei interessante Erweiterungen. Mit-
tels des Attributs Einstellungen � Anforderungs-/Schaltflächenname wird
der Requestwert eingestellt. Beachten Sie, dass Sie, wenn die dynamische Aktion
durch einen Klick auf eine Schaltfläche ausgelöst wird, unbedingt den Namen der
Schaltfläche als Requestwert verwenden müssen. Dies hat seinen Grund darin, dass
Validierungen und Seitenprozesse, die Sie an einen Klick auf diese Schaltfläche
gebunden hatten, nicht ausgeführt werden, wenn diese Konvention nicht eingehal-
ten wird.
Die zweite Option Einstellungen � Verarbeitung anzeigen bezieht sich auf die
Frage, wie die Anwendungsseite reagieren soll, wenn die Verarbeitung der Seite ange-
fordert wurde. Was ist damit gemeint? Wenn die Seite abgesendet wird, kann die Ver-
arbeitung einige Zeit in Anspruch nehmen. Wie darf der Anwender reagieren,
während die Seite in Bearbeitung ist? Was passiert, wenn ein ungeduldiger Anwender
die Seite ein zweites Mal absendet? Das Attribut kontrolliert diese Situationen. Wird
es auf Ja eingestellt, hat dies zur Folge, dass nach dem ersten Klick auf die Seite die
Seite abgedunkelt und alle Schaltflächen deaktiviert werden. Auf diese Weise ist die
Seite vor dem unbeabsichtigten erneuten Versenden geschützt.
Bereich »Stil, Verschiedenes«
Die Aktionen dieses Bereichs kontrollieren die HTML-Attribute class und style. Die
ersten beiden Attribute erlauben es, CSS-Klassen dynamisch hinzuzufügen oder zu
entfernen, während das dritte Element direkte Stilfestlegungen für das angespro-
chene Element trifft. Logischerweise müssen die Klassen oder Stilangaben, die hier
verwendet werden, durch weitere Attribute im Bereich Einstellungen definiert
werden. Die Optionen sind aber wenig aufregend, und mehr als Erinnerung soll hier
dafür geworben werden, möglichst konkrete CSS-Klassen zu verwenden und nicht
direkte Stileingaben, da dies die Dokumentationsqualität erhöht und manuelle
Nacharbeit verhindern hilft.
Im Bereich Verschiedenes schließlich wird ein Aktionstyp Abbruchereignis angebo-
ten, der dazu verwendet werden kann, das Propagieren des Ereignisses zu unterdrü-
cken. Manchmal kann diese Aktion, als letzte in der aktuellen Aktionenliste
verwendet, Probleme beheben helfen, die durch weitere dynamische Aktionen oder
Schleifen in Aufrufen der dynamischen Aktionen auftreten können. Wir hatten
schon darüber gesprochen, dass dies ein Notnagel bleiben sollte.
4530.book Seite 550 Donnerstag, 7. September 2017 3:59 15
Auf einen Blick
Auf einen Blick
1 Einführung ............................................................................................................... 21
TEIL I Die Basics
2 Grundlagen von APEX .......................................................................................... 39
3 Eine Websheet-Anwendung erstellen ............................................................ 67
4 Überblick über die Entwicklungsumgebung ................................................ 87
5 Eine einfache APEX-Anwendung ...................................................................... 115
6 Eine einfache Datenbankanwendung erstellen .......................................... 149
TEIL II APEX im Detail
7 APEX-Anwendungen ............................................................................................. 195
8 Anwendungsseiten ............................................................................................... 223
9 Regionen ................................................................................................................... 269
10 Seitenelemente und Schaltflächen ................................................................. 315
11 Seitenprozesse ........................................................................................................ 367
12 Berichte ..................................................................................................................... 397
13 Formulare ................................................................................................................. 443
14 Grafiken und Charts .............................................................................................. 503
15 Dynamische Aktionen .......................................................................................... 531
TEIL III Fortgeschrittene APEX-Konzepte
16 Plugins ....................................................................................................................... 581
17 Webservices ............................................................................................................. 645
18 Fehlerbehandlung, Code Review und Debugging ...................................... 669
19 Entwicklung komplexer APEX-Anwendungen ............................................. 703
20 Mobile Entwicklung mit APEX ........................................................................... 745
21 Authentifizierung und Autorisierung ............................................................. 763
22 APEX-Administration ............................................................................................ 783
23 Sicherheit .................................................................................................................. 803
24 Internationalisierung ........................................................................................... 823
4530.book Seite 3 Donnerstag, 7. September 2017 3:59 15
Inhalt
5
Inhalt
1 Einführung 21
1.1 Für wen ist dieses Buch geschrieben? ........................................................................ 25
1.2 Der Aufbau des Buches ..................................................................................................... 26
1.2.1 Teil I: Die Basics ..................................................................................................... 26
1.2.2 Teil II: APEX im Detail .......................................................................................... 28
1.2.3 Teil III: Fortgeschrittene APEX-Konzepte ...................................................... 30
1.2.4 Anhang .................................................................................................................... 32
1.2.5 Anmerkung zur Formatierung ......................................................................... 33
1.3 Danksagung ........................................................................................................................... 34
TEIL I Die Basics
2 Grundlagen von APEX 39
2.1 Technische Rahmenbedingungen ............................................................................... 39
2.1.1 Probleme von Webanwendungen ................................................................. 41
2.1.2 Technische Komponenten einer typischen Webanwendung ............... 47
2.1.3 Bestehende Entwicklungsumgebungen ...................................................... 49
2.1.4 APEX als Lösungsansatz ..................................................................................... 50
2.2 Überblick über APEX .......................................................................................................... 54
2.2.1 Allgemeiner Überblick ........................................................................................ 54
2.2.2 Workspaces ............................................................................................................ 56
2.2.3 APEX-Anwendung ................................................................................................ 61
2.2.4 Seiten ....................................................................................................................... 63
2.2.5 Regionen, Items und Schaltflächen ............................................................... 63
2.2.6 Zusammenfassung .............................................................................................. 66
3 Eine Websheet-Anwendung erstellen 67
3.1 Übersicht über Websheet-Anwendungen ............................................................... 68
3.1.1 Bedienung einer Websheet-Anwendung .................................................... 68
4530.book Seite 5 Donnerstag, 7. September 2017 3:59 15
Inhalt
6
3.2 Mitgelieferte Websheet-Anwendungen .................................................................. 70
3.3 Websheet-Eigenschaften ................................................................................................ 71
3.3.1 Websheet ................................................................................................................ 71
3.3.2 Details/Logo ........................................................................................................... 72
3.3.3 Stil ............................................................................................................................. 72
3.3.4 Authentifizierung ................................................................................................. 72
3.3.5 Autorisierung ......................................................................................................... 72
3.3.6 SQL/Vorgeschlagene Objekte .......................................................................... 73
3.4 Bestandteile einer Websheet-Anwendung ............................................................. 73
3.4.1 Datenraster / Tabellendaten ............................................................................ 73
3.4.2 Seiten ....................................................................................................................... 74
3.4.3 Abschnitte .............................................................................................................. 75
3.4.4 Verweise .................................................................................................................. 75
3.4.5 Anmerkungen ....................................................................................................... 76
3.5 Datenmodell .......................................................................................................................... 77
3.6 Verwaltung von Anwenderrechten ............................................................................ 78
3.7 Beispiel: Anlage einer Websheet-Anwendung ...................................................... 79
3.7.1 Neuanlage eines Websheets aus der Entwicklungsumgebung ........... 79
3.7.2 Datenraster erstellen .......................................................................................... 80
3.7.3 Eine einfache Seite mit Abschnitten hinzufügen ...................................... 82
3.7.4 Einschränken der Benutzerrechte .................................................................. 83
3.8 Zusammenfassung und Bewertung ........................................................................... 85
4 Überblick über die Entwicklungsumgebung 87
4.1 Einstiegsseite ........................................................................................................................ 88
4.2 Application Builder ............................................................................................................. 90
4.3 Seitendesigner ...................................................................................................................... 91
4.3.1 Aufbau der Seite ................................................................................................... 92
4.3.2 Linker Seitenbereich ............................................................................................ 93
4.3.3 Galerie ...................................................................................................................... 94
4.3.4 Canvas ...................................................................................................................... 95
4.3.5 Attributbereich ..................................................................................................... 97
4.4 Gemeinsame Komponenten .......................................................................................... 98
4.4.1 Bereich »Anwendungslogik« ............................................................................ 100
4.4.2 Bereich »Sicherheit« ............................................................................................ 100
4.4.3 Bereich »Weitere Komponenten« .................................................................. 100
4530.book Seite 6 Donnerstag, 7. September 2017 3:59 15
Inhalt
7
4.4.4 Bereich »Navigation« .......................................................................................... 101
4.4.5 Benutzeroberfläche ............................................................................................. 102
4.4.6 Bereich »Dateien« ................................................................................................ 102
4.4.7 Bereich »Datenreferenzen« .............................................................................. 103
4.4.8 Bereich »Berichte« ............................................................................................... 103
4.4.9 Bereich »Globalization« ..................................................................................... 103
4.4.10 Seitenbereich »Aufgaben« ................................................................................ 104
4.5 Administration des Workspaces .................................................................................. 104
4.5.1 Service verwalten ................................................................................................. 105
4.5.2 Benutzer und Gruppen verwalten .................................................................. 106
4.5.3 Aktivität überwachen – Dashboards – Auslastungsbericht .................. 108
4.6 SQL Workshop ...................................................................................................................... 108
4.6.1 Utilitys ...................................................................................................................... 109
4.6.2 RESTful Services .................................................................................................... 111
4.7 Team Development und mitgelieferte Anwendungen ...................................... 111
4.8 Zusammenfassung ............................................................................................................. 112
5 Eine einfache APEX-Anwendung 115
5.1 Übersicht über die Anwendung .................................................................................... 115
5.2 Rendern einer APEX-Seite ............................................................................................... 120
5.2.1 Pre-Rendering – »Vor Header« ........................................................................ 120
5.2.2 Pre-Rendering – »Nach Header« und »Vor Regionen« ............................ 122
5.2.3 Regionen ................................................................................................................. 123
5.2.4 Seitenelemente ..................................................................................................... 125
5.2.5 Post-Rendering ...................................................................................................... 126
5.2.6 Dynamic Actions .................................................................................................. 126
5.2.7 Zusammenfassung .............................................................................................. 127
5.3 Verarbeitung von Benutzereingaben ........................................................................ 127
5.3.1 Rendern einer Formularseite ............................................................................ 127
5.3.2 Daten für ein Formular lesen: der Fetch Row-Prozess ............................. 128
5.3.3 Verarbeitung der Seite ....................................................................................... 132
5.3.4 Was passiert in der Datenbank? ..................................................................... 136
5.3.5 Zusammenfassung .............................................................................................. 140
5.4 Verschiedene Regionstypen ........................................................................................... 142
5.4.1 Berichtsregionen .................................................................................................. 142
5.4.2 Grafikregionen ...................................................................................................... 144
4530.book Seite 7 Donnerstag, 7. September 2017 3:59 15
Inhalt
8
5.4.3 Kalenderregion ..................................................................................................... 144
5.4.4 Listenregionen ...................................................................................................... 145
5.4.5 Assistenten ............................................................................................................. 146
5.5 Zusammenfassung ............................................................................................................. 147
6 Eine einfache Datenbankanwendung erstellen 149
6.1 Vorbereitung und Datenmodell ................................................................................... 149
6.2 Anlage der Anwendung .................................................................................................... 152
6.3 Eine Berichtsseite anlegen .............................................................................................. 156
6.4 Startseite editieren ............................................................................................................. 164
6.5 Eine Formularseite anlegen ............................................................................................ 168
6.6 Mit gemeinsamen Komponenten arbeiten ............................................................. 171
6.7 Anwendungsseite validieren ......................................................................................... 174
6.8 Eine Dynamic Action einfügen ...................................................................................... 175
6.9 Berechnungen einfügen ................................................................................................... 176
6.10 Validierungen einfügen ................................................................................................... 178
6.11 Einen Bericht editieren und filtern .............................................................................. 184
6.12 Eine Geschäftsgrafik einfügen ...................................................................................... 189
6.13 Zusammenfassung ............................................................................................................. 190
TEIL II APEX im Detail
7 APEX-Anwendungen 195
7.1 Anwendungseigenschaften ........................................................................................... 196
7.1.1 Tabulator »Definition« ....................................................................................... 197
7.1.2 Tabulator »Sicherheit« ....................................................................................... 206
7.1.3 Tabulator »Globalization« ................................................................................ 211
7.1.4 Tabulator »Benutzeroberfläche« .................................................................... 212
7.2 Verwendung von Anwendungen ................................................................................. 219
4530.book Seite 8 Donnerstag, 7. September 2017 3:59 15
Inhalt
9
8 Anwendungsseiten 223
8.1 Leere Seite .............................................................................................................................. 223
8.1.1 Bereich »ID« ........................................................................................................... 224
8.1.2 Bereich »Darstellung« ........................................................................................ 228
8.1.3 Bereiche »Navigationsmenü«, »Navigation«, »JavaScript«,
»CSS« und »HTML-Header« .............................................................................. 230
8.1.4 Bereich »Header und Footer« ........................................................................... 231
8.1.5 Bereiche »Schreibgeschützt« und »Sicherheit« ......................................... 231
8.1.6 Bereich »Erweitert« ............................................................................................. 233
8.1.7 Bereiche »Servercache« und »Konfiguration« ........................................... 234
8.1.8 Bereich »Fehlerbehandlung« ........................................................................... 235
8.1.9 Bereiche »Hilfe« und »Kommentare« ........................................................... 236
8.2 Anmeldeseite ........................................................................................................................ 237
8.3 Globale Seite ......................................................................................................................... 238
8.4 Formular .................................................................................................................................. 240
8.4.1 Option »Bericht mit Formular basierend auf Tabelle« ............................ 241
8.4.2 Option »Editierbares interaktives Grid« ....................................................... 241
8.4.3 Option »Master/Detail (1 Seite/2 Seiten)« ................................................. 242
8.4.4 Option »Formular basierend auf Tabelle« ................................................... 243
8.4.5 Option »Formular basierend auf Prozedur« ............................................... 243
8.4.6 Option »Formular basierend auf SQL-Abfrage« ........................................ 244
8.4.7 Option »Formular basierend auf Web Service« ......................................... 244
8.5 Assistent .................................................................................................................................. 244
8.5.1 Assistentenseite »Seiten« ................................................................................. 245
8.5.2 Assistentenseite »Navigationsmenü« .......................................................... 245
8.5.3 Assistentenseite »Seitenattribute« ............................................................... 246
8.5.4 Eingaben von Assistenten verarbeiten ......................................................... 249
8.6 Laden von Daten .................................................................................................................. 250
8.6.1 Assistentenseite »Data Load-Tabelle« .......................................................... 251
8.6.2 Assistentenseite »Transformationsregeln« ................................................ 251
8.6.3 Assistentenseite »Tabellen-Lookups« ........................................................... 252
8.6.4 Assistentenseite »Seitenattribute« ............................................................... 253
8.6.5 Assistentenseite »Navigationsmenü« .......................................................... 253
8.6.6 Assistentenseite »Schaltflächen und Verzweigungen« .......................... 253
8.6.7 Bedienung des Datenlade-Assistenten ........................................................ 254
8.7 Zugriffskontrolle ................................................................................................................. 256
8.7.1 Datenbankobjekte ............................................................................................... 257
8.7.2 Seitenelemente ..................................................................................................... 258
8.7.3 Gemeinsame Komponenten ............................................................................ 259
4530.book Seite 9 Donnerstag, 7. September 2017 3:59 15
Inhalt
10
8.8 Feedbackseite ....................................................................................................................... 262
8.8.1 Feedbackseite erstellen ...................................................................................... 263
8.8.2 Review der erstellten Seitenelemente .......................................................... 264
8.8.3 Verwendung von Feedback .............................................................................. 266
8.9 Modale Seiten ....................................................................................................................... 267
9 Regionen 269
9.1 Regionstypen »Statischer Inhalt«, »Dynamischer PL/SQL-Inhalt«
und »URL« .............................................................................................................................. 270
9.1.1 Bereiche »ID« und »Quelle« .............................................................................. 270
9.1.2 Bereich »Layout« .................................................................................................. 272
9.1.3 Bereich »Darstellung« ........................................................................................ 273
9.1.4 Bereich »Erweitert« ............................................................................................. 278
9.1.5 Bereich »Header und Footer« ........................................................................... 280
9.1.6 Bereiche »Serverseitige Bedingung« und »Schreibgeschützt« ............. 281
9.1.7 Bereiche »Sicherheit«, »Konfiguration« und »Servercache« ................. 285
9.1.8 Bereich »Anpassung« ......................................................................................... 285
9.2 Grid Layout ............................................................................................................................. 287
9.2.1 Einstieg: Anordnung von Regionen auf der Seite ..................................... 287
9.2.2 Fortgeschrittene Techniken des Regionslayouts ....................................... 291
9.2.3 Responsive Design ............................................................................................... 293
9.3 Regionstyp »Liste« .............................................................................................................. 294
9.3.1 Beispiel: Liste für Anwendungsbereiche ...................................................... 295
9.3.2 Übersicht über die verfügbaren Listentemplates ..................................... 299
9.4 Regionstyp »Baum« ........................................................................................................... 300
9.5 Tabulator-Regionen ........................................................................................................... 304
9.6 Regionstyp »Auswahl Regionsanzeige« .................................................................. 306
9.7 Regionstyp »Hilfetext« .................................................................................................... 307
10 Seitenelemente und Schaltflächen 315
10.1 Elementtyp »Nur anzeigen« .......................................................................................... 315
10.1.1 Bereich »Einstellungen« .................................................................................... 316
10.1.2 Bereich »Layout« .................................................................................................. 317
10.1.3 Bereiche »Darstellung« und »Werteliste« ................................................... 319
4530.book Seite 10 Donnerstag, 7. September 2017 3:59 15
Inhalt
11
10.1.4 Bereich »Erweitert« ............................................................................................. 320
10.1.5 Bereich »Quelle« ................................................................................................... 321
10.1.6 Bereich »Standard« ............................................................................................. 328
10.1.7 Bereiche »Serverseitige Bedingung« und »Schreibgeschützt« ............. 329
10.1.8 Bereich »Sicherheit« ............................................................................................ 331
10.1.9 Bereiche »Konfiguration«, »Hilfe«, »Kommentare« ................................. 333
10.2 Elementtypen zur Texterfassung ................................................................................. 334
10.2.1 Elementtypen »Textfeld« und »Kennwort« ................................................ 334
10.2.2 Elementtypen »Textbereich« und »Rich Text-Editor« ............................. 337
10.3 Elementtypen, die auf Wertelisten basieren .......................................................... 339
10.3.1 Elementtypen »Auswahlliste«, »Listen-Manager«,
»Popup-Werteliste« und »Wechseln« ........................................................... 342
10.3.2 Elementtypen »Kontrollkästchen«, »Optionsgruppe«
und »Shuttle« ....................................................................................................... 346
10.3.3 Elementtyp »Textfeld mit automatisch vervollständigen« ................... 350
10.4 Sonstige Elementtypen .................................................................................................... 353
10.4.1 Elementtyp »Datumsauswahl« ....................................................................... 353
10.4.2 Elementtyp »Farbauswahl« .............................................................................. 355
10.4.3 Elementtyp »Datei durchsuchen…« ............................................................... 356
10.4.4 Elementtyp »Ausgeblendet« ............................................................................ 359
10.5 Schaltflächen ......................................................................................................................... 361
10.5.1 Positionierung von Schaltflächen ................................................................... 361
10.5.2 Darstellungsoptionen ......................................................................................... 362
10.5.3 Funktionale Attribute ......................................................................................... 364
11 Seitenprozesse 367
11.1 Berechnungen ....................................................................................................................... 368
11.2 Validierungen ....................................................................................................................... 370
11.3 Verzweigungen .................................................................................................................... 372
11.4 Prozesse ................................................................................................................................... 375
11.4.1 Prozesstypen »Automatische Zeilenverarbeitung« und
»Automatischer Zeilenabruf« ......................................................................... 375
11.4.2 Prozesstyp »Formularseitenumbruch« ......................................................... 377
11.4.3 Prozesstyp »PL/SQL-Code« ................................................................................ 382
11.4.4 Sonstige Seitenprozesse .................................................................................... 393
4530.book Seite 11 Donnerstag, 7. September 2017 3:59 15
Inhalt
12
12 Berichte 397
12.1 Klassische Berichte ............................................................................................................. 397
12.1.1 Allgemeine Regionsattribute ........................................................................... 398
12.1.2 Spezielle Regionsattribute ................................................................................ 400
12.1.3 Templates des Bereichs »Darstellung« ......................................................... 402
12.1.4 Klassischer Bericht (basierend auf Funktion) ............................................. 412
12.2 Interaktives Grid .................................................................................................................. 415
12.2.1 Grundfunktionen des interaktiven Grids ..................................................... 416
12.2.2 Optionen für den Endbenutzer ....................................................................... 417
12.2.3 Sichten des interaktiven Grids ......................................................................... 420
12.2.4 Optionen des interaktiven Grids ..................................................................... 426
12.2.5 Erweiterte Anwendungen des interaktiven Grids .................................... 434
12.2.6 Die Spalten des interaktiven Grids ................................................................. 439
12.2.7 Unterschiede zwischen »interaktivem Grid« und
»interaktivem Bericht« ....................................................................................... 440
13 Formulare 443
13.1 Formular für eine Tabellenzeile .................................................................................... 443
13.1.1 Verarbeitung komplexer Formulare .............................................................. 446
13.1.2 Alternativen zur Verarbeitung komplexer Formulare ............................. 451
13.1.3 Fazit: Komplexe Formulare verarbeiten ....................................................... 454
13.1.4 Beispiel aus einem Projekt ................................................................................ 455
13.2 Formular für tabellarische Bearbeitung .................................................................... 458
13.2.1 Ein Beispielformular ............................................................................................ 460
13.2.2 Überblick über die Seitenelemente ............................................................... 461
13.2.3 Attribute des editierbaren Grids ..................................................................... 462
13.2.4 Zusätzliche Spaltenattribute ........................................................................... 465
13.2.5 Varianten der Eingabe in editierbare Grids ................................................. 467
13.2.6 Manuelle Verarbeitung der Daten eines editierbaren Grids ................. 471
13.3 Arbeiten mit der Collection-API .................................................................................... 476
13.3.1 Eine Collection erzeugen ................................................................................... 477
13.3.2 In die Collection schreiben ................................................................................ 478
13.3.3 Löschen von Collections ..................................................................................... 480
13.3.4 Weitere Methoden .............................................................................................. 480
13.3.5 Anwendungsbeispiel .......................................................................................... 481
4530.book Seite 12 Donnerstag, 7. September 2017 3:59 15
Inhalt
13
13.4 Anwendungsbeispiel: Status Chart Toolkit ............................................................. 485
13.4.1 Das Problem und der Lösungsansatz ............................................................ 486
13.4.2 SCT im Einsatz ....................................................................................................... 491
13.4.3 Verwendung des Plugins ................................................................................... 497
13.4.4 Zusammenfassung und Bewertung .............................................................. 499
14 Grafiken und Charts 503
14.1 Technischer Hintergrund ................................................................................................. 503
14.2 Erstellung von Grafiken in APEX .................................................................................. 505
14.2.1 Regionstyp »Diagramm« ................................................................................... 507
14.2.2 Datenreihen eines Diagramms ....................................................................... 507
14.2.3 Diagrammachsen ................................................................................................. 511
14.2.4 Spezielle Regionsattribute ................................................................................ 513
14.3 Weitere Diagrammtypen ................................................................................................. 517
14.3.1 Gantt-Charts .......................................................................................................... 517
14.3.2 Dashboards ............................................................................................................ 524
14.3.3 Kombinationsdiagramme ................................................................................. 525
14.4 JET-Charts und JavaScript ................................................................................................ 525
14.5 Migration älterer Grafiken zu JET-Charts ................................................................. 528
14.6 Mitgelieferte Grafik-Plugins .......................................................................................... 528
15 Dynamische Aktionen 531
15.1 Verwendung von dynamischen Aktionen ............................................................... 532
15.1.1 Was sind dynamische Aktionen? .................................................................... 532
15.1.2 Ereignisse und Typen dynamischer Aktionen ............................................ 535
15.1.3 Aktionen .................................................................................................................. 541
15.2 JavaScript und jQuery ....................................................................................................... 551
15.2.1 Einführung JavaScript ......................................................................................... 551
15.2.2 Einführung in jQuery .......................................................................................... 566
15.2.3 Wo wird JavaScript in APEX eingesetzt? ...................................................... 569
15.3 Zusammenfassung: JavaScript und APEX ................................................................ 577
4530.book Seite 13 Donnerstag, 7. September 2017 3:59 15
Inhalt
14
TEIL III Fortgeschrittene APEX-Konzepte
16 Plugins 581
16.1 Vor- und Nachteile von Plugins .................................................................................... 581
16.1.1 Was ist ein Plugin? ............................................................................................... 581
16.1.2 Warnhinweise vor Plugins ................................................................................ 582
16.1.3 Empfehlungen für Plugins ................................................................................ 584
16.1.4 Arten von Plugins ................................................................................................. 584
16.2 Arbeitsweise von Plugins ................................................................................................ 586
16.2.1 Initialisierung ........................................................................................................ 586
16.2.2 Verwendung des Plugins auf der Seite ......................................................... 587
16.2.3 Validierungsphase, Aktualisierungsphase .................................................. 588
16.3 Die Erfassungsseiten für Plugins .................................................................................. 589
16.3.1 Verwaltungsseite eines Plugins ...................................................................... 589
16.3.2 Benutzerdefinierte Attribute verwalten ...................................................... 605
16.4 Ein Item-Plugin erstellen ................................................................................................. 608
16.4.1 Konzeption des Plugins ...................................................................................... 608
16.4.2 Anlegen der Metadaten ..................................................................................... 609
16.4.3 Implementierung des PL/SQL-Packages ....................................................... 611
16.4.4 Implementierung der JavaScript-Logik ......................................................... 621
16.5 Ein Regions-Plugin erstellen ........................................................................................... 629
16.5.1 Review der Metadaten und des PL/SQL-Codes .......................................... 629
16.5.2 Review des JavaScript-Codes ........................................................................... 636
16.6 Plugins ex- und importieren .......................................................................................... 640
16.6.1 Plugins exportieren ............................................................................................. 640
16.6.2 Plugins importieren ............................................................................................. 641
16.6.3 Plugins subskribieren .......................................................................................... 641
16.7 Zusammenfassung ............................................................................................................. 642
17 Webservices 645
17.1 Was ist ein Webservice? ................................................................................................... 645
17.1.1 SOAP ......................................................................................................................... 646
17.1.2 REST .......................................................................................................................... 647
17.2 Webservices in der Datenbank über ORDS .............................................................. 649
4530.book Seite 14 Donnerstag, 7. September 2017 3:59 15
Inhalt
15
17.3 REST-Webservices in APEX .............................................................................................. 656
17.3.1 Applikationsunabhängige Webservice-Referenzen ................................. 657
17.3.2 Darstellung eines Berichts ................................................................................ 666
17.4 Bewertung: REST-Webservices ..................................................................................... 667
18 Fehlerbehandlung, Code Review und Debugging 669
18.1 Fehlerbehandlung in APEX ............................................................................................. 669
18.1.1 APEX_ERROR .......................................................................................................... 670
18.1.2 Generisches Logging-Werkzeug ...................................................................... 675
18.1.3 apex.message ........................................................................................................ 681
18.2 Debugging .............................................................................................................................. 683
18.2.1 APEX_DEBUG ........................................................................................................ 683
18.2.2 Debugging von Dynamic Actions und Plugins ........................................... 686
18.2.3 Weiter gehendes Logging ................................................................................. 687
18.2.4 Remote Debugging mit SQL Developer ........................................................ 688
18.2.5 Debugging ohne APEX ........................................................................................ 692
18.3 Code Review .......................................................................................................................... 693
18.3.1 Suche ........................................................................................................................ 694
18.3.2 Advisor ..................................................................................................................... 695
18.3.3 Anwendung »Application Standards Tracker« ........................................... 696
18.4 Automatisiertes Testen .................................................................................................... 699
18.4.1 Test von PL/SQL-Code ......................................................................................... 699
18.4.2 Test von APEX-Weboberflächen ..................................................................... 700
19 Entwicklung komplexer APEX-Anwendungen 703
19.1 Organisation innerhalb der Datenbank .................................................................... 704
19.1.1 Das »Thick Database«-Paradigma .................................................................. 705
19.1.2 Trennung von Geschäfts- und Darstellungslogik ..................................... 708
19.1.3 Anforderungen an die Datenmodellierung ................................................. 711
19.1.4 Schemata und Workspaces .............................................................................. 719
19.1.5 APEX im internationalen Umfeld ................................................................... 722
19.2 Deployment ........................................................................................................................... 723
19.2.1 Workspace .............................................................................................................. 728
19.2.2 Anwendungen ....................................................................................................... 733
4530.book Seite 15 Donnerstag, 7. September 2017 3:59 15
Inhalt
16
19.2.3 Anwendungskomponenten ............................................................................. 736
19.2.4 Unterstützende Objekte .................................................................................... 736
19.2.5 Begleitende Dateien ............................................................................................ 737
19.3 Entwicklung im Team ........................................................................................................ 739
19.3.1 Aufteilung des Codes .......................................................................................... 740
19.3.2 Team Development ............................................................................................. 742
20 Mobile Entwicklung mit APEX 745
20.1 Berücksichtigung vieler verschiedener Endgeräte ............................................... 746
20.2 Die Auswahl des richtigen Themes ............................................................................. 746
20.2.1 Das Universal Theme .......................................................................................... 747
20.2.2 jQuery Mobile ........................................................................................................ 749
20.3 Erstellung einer mobilen Anwendung ....................................................................... 749
20.3.1 Erstellung einer neuen Anwendung für mobile Endgeräte ................... 750
20.3.2 Hinzufügen einer weiteren Benutzeroberfläche für eine
bestehende Desktop-Anwendung ................................................................. 751
20.4 Dynamische Aktionen für mobile Endgeräte ......................................................... 753
20.5 Der jQuery Mobile ThemeRoller ................................................................................... 756
20.6 Tipps für die Entwicklung mobiler Anwendungen .............................................. 758
20.6.1 Google Chrome Developer Tools und der Firefox Inspector .................. 758
20.6.2 Die Zukunft der mobilen Entwicklung mit jQuery Mobile ..................... 760
20.7 Mitgelieferte Anwendungen ......................................................................................... 761
21 Authentifizierung und Autorisierung 763
21.1 Authentifizierung ............................................................................................................... 763
21.1.1 Mitgelieferte Authentifizierungsverfahren ................................................ 764
21.1.2 Wie funktioniert eine Authentifizierung in APEX? ................................... 766
21.1.3 APEX Authentication API ................................................................................... 768
21.1.4 Erstellung eines eigenen Authentifizierungsverfahrens ........................ 769
21.1.5 Single Sign-On-Verfahren ................................................................................. 773
21.2 Autorisierung ........................................................................................................................ 774
21.3 APEX-Anwendung zur Benutzerverwaltung ........................................................... 775
21.3.1 Datenmodell .......................................................................................................... 776
4530.book Seite 16 Donnerstag, 7. September 2017 3:59 15
Inhalt
17
21.3.2 Anwendungslogik ................................................................................................ 778
21.3.3 APEX-Anwendung ................................................................................................ 779
21.3.4 Beispiel für die Verwendung ............................................................................ 781
22 APEX-Administration 783
22.1 Bereich »Anforderungen verwalten« ......................................................................... 784
22.2 Bereich »Instanz verwalten« ......................................................................................... 786
22.2.1 Bereich »Instanzeinstellungen« ...................................................................... 786
22.2.2 Bereich »Gemeinsame Komponenten verwalten« ................................... 790
22.2.3 Bereich »Meldungen« ......................................................................................... 790
22.2.4 Bereiche »Metadaten verwalten« und »Logs
und Dateien verwalten« .................................................................................... 791
22.3 Bereich »Workspaces verwalten« ............................................................................... 792
22.3.1 Bereich »Workspace-Aktionen« ...................................................................... 793
22.3.2 Bereich »Anwendungen verwalten« ............................................................. 797
22.3.3 Bereiche »Exportieren/Importieren« und »Workspace-Berichte« ...... 798
22.4 Bereich »Aktivität überwachen« ................................................................................. 801
23 Sicherheit 803
23.1 Arbeitsweise von APEX ..................................................................................................... 803
23.1.1 Zugriff auf APEX ................................................................................................... 803
23.1.2 Schemata von APEX ............................................................................................. 804
23.1.3 Prozeduren ............................................................................................................. 805
23.1.4 Session und Sessionstatus ................................................................................ 807
23.2 Administration von Sicherheitseinstellungen ....................................................... 809
23.2.1 Grundlegende Entscheidungen bei der Installation ................................ 809
23.2.2 Sicherheitseinstellungen im Bereich APEX-Administration .................. 809
23.2.3 Sicherheitseinstellungen auf Workspace-Ebene ....................................... 812
23.2.4 Sicherheit auf Anwendungsebene ................................................................. 813
23.3 Zusammenfassung ............................................................................................................. 822
4530.book Seite 17 Donnerstag, 7. September 2017 3:59 15
Inhalt
18
24 Internationalisierung 823
24.1 Eine Anwendungssprache auswählen ....................................................................... 823
24.2 Eine Anwendung übersetzen ......................................................................................... 825
24.2.1 Bereich »Anwendungssprachen definieren« .............................................. 826
24.2.2 Bereich »Übersetzbaren Text vordefinieren« ............................................. 827
24.2.3 Bereich »XLIFF-Übersetzungsdateien herunterladen« ............................ 828
24.2.4 Bereich »Text übersetzen« ................................................................................ 830
24.2.5 Bereich »XLIFF-Übersetzungsdateien anwenden« ................................... 830
24.2.6 Bereich »Übersetzte Anwendungen veröffentlichen« ............................ 830
24.3 Weitere Werkzeuge zur Übersetzung ........................................................................ 831
24.3.1 Bereich »Textnachrichten« ............................................................................... 831
24.3.2 Bereich »Dynamische Übersetzungen« ........................................................ 833
24.3.3 Bereich »Übersetzungs-Repository« .............................................................. 834
24.4 Sonstige Herausforderungen der Internationalisierung ................................... 834
24.4.1 Stammdaten der Datenbank ........................................................................... 834
24.4.2 Umgang mit Datum und Zeit .......................................................................... 835
24.4.3 Kulturelle und gesetzliche Unterschiede ..................................................... 836
24.4.4 Icons und Schreibrichtung ................................................................................ 837
Anhang 839
A Installation der Datenbank ............................................................................................. 841
A.1 Aufsetzen einer Beispieldatenbank ............................................................... 841
A.1.1 Eine Datenbank herunterladen und installieren ....................................... 841
A.2 SQL Developer ....................................................................................................... 852
A.2.1 SQL Developer herunterladen und installieren ......................................... 852
A.2.2 Übersicht SQL Developer ................................................................................... 853
A.2.3 Eine Datenbankverbindung aufbauen ......................................................... 853
A.2.4 SQL-Anweisungen ausführen .......................................................................... 856
B Installation von APEX ........................................................................................................ 859
B.1 Installation von Tomcat ..................................................................................... 859
B.2 Installation von ORDS ......................................................................................... 860
B.3 Entfernen einer existierenden APEX-Installation ..................................... 863
B.4 Installation einer neuen APEX-Version ......................................................... 864
B.4.1 Notwendige Vorarbeiten ................................................................................... 865
4530.book Seite 18 Donnerstag, 7. September 2017 3:59 15
Inhalt
19
B.4.2 Vollständige Installation von APEX ................................................................ 865
B.4.3 Installation von APEX im Read Only-Modus .............................................. 866
B.4.4 Nacharbeiten nach der Installation ............................................................... 867
B.4.5 Installation der CSS-, JavaScript- und Bilddateien .................................... 868
B.5 Installation des APEX-Buch-Workspace ....................................................... 868
B.5.1 Installation des Datenbankschemas ............................................................. 868
B.5.2 Installation des Workspaces ............................................................................ 869
C Liste der Navigationskürzel ............................................................................................ 871
D Glossar ...................................................................................................................................... 875
Index ........................................................................................................................................................ 885
4530.book Seite 19 Donnerstag, 7. September 2017 3:59 15
Index
885
Index
A
ACL � Sicherheit
Administration ........................................... 104, 783
Aktivität überwachen ................................... 801
Anforderung verwalten ................................ 784
Benutzer ............................................................. 106
Featurekonfiguration ................................... 787
gemeinsame Komponenten ....................... 790
Gruppe ................................................................ 108
Gruppe zuweisen ............................................ 108
Instanz verwalten ........................................... 786
Intanzeinstellung ........................................... 786
Logs und Dateien ............................................ 791
Meldung ............................................................. 790
Metadaten ......................................................... 791
Rest-Administration ...................................... 790
Service verwalten ............................................ 105
Sicherheit ........................................................... 787
Überwachung ................................................... 108
Workspace verwalten .................................... 792
Workspace-Bereinigung ............................... 789
Adobe Flash ........................................................... 875
amCharts � Grafik
Anwendung ........................ 61, 195, 200, 218, 733
Alias ..................................................................... 162
Änderung der ID beim Import ................... 733
anlegen ............................................................... 152
Anmelde-URL ................................................... 214
APEX-Anwendung .......................................... 875
Authentifizierung ........................................... 207
Autorisierungsschema ................................. 813
Benutzeroberfläche ............................... 212, 876
Benutzerverwaltung ...................................... 775
Cookie .................................................................. 219
CSS ........................................................................ 218
Datenbankanwendung ................................... 62
Datenmodell ..................................................... 149
Debugging ......................................................... 200
Deployment ...................................................... 733
Eigenschaft ........................................................ 196
Ersetzung ........................................................... 206
Feedback ............................................................ 200
Fehlerbehandlung .......................................... 202
Fehlerbehandlungsfunktion ....................... 203
Formular rendern ........................................... 127
globale Benachrichtigung ........................... 205
Anwendung (Forts.)
Globalization .................................................... 211
Grundsätze der Erstellung ........................... 191
Gruppe ................................................................ 198
Home-URL ......................................................... 214
ID ........................................................................... 197
JavaScript ........................................................... 217
Logging ............................................................... 199
Login-URL .......................................................... 215
mitgelieferte Anwendung ............................... 62
mitgelieferte mobile Anwendungen ....... 761
mobile Anwendung ........................................ 745
Name ................................................................... 197
Navigationsleiste ............................................ 217
Navigationsmenü .................................. 215, 226
Prozess ................................................................ 122
Region .................................................................... 63
Rendern ............................................................... 120
Seite ......................................................................... 63
Seitenelement ...................................................... 64
Sessionverwaltung ......................................... 207
Sicherheit ........................................................... 206
Startseite ............................................................ 164
Theme ..................................................................... 62
Tipps für mobile Anwendungen ............... 758
übersetzen ......................................................... 825
Verarbeitung .................................................... 127
verfügbar ........................................................... 201
Verwendung ...................................................... 219
Verzweigung ..................................................... 121
Websheet-Anwendung ..................................... 62
AnyChart � Grafik
Apace Tomcat ........................................................ 875
APEX .................................................................. 50, 198
Accept Process ..................................................... 56
Adapter ............................................................... 717
Änderung in Version 5.1 ................................ 458
APEX Data Dictionary 50, 54, 197, 226, 875
APEX Test Automation Frame-
work ATAF ..................................................... 876
APEX Tree ........................................................... 875
APEX-Anwendung ............................................. 61
APEX-Schema ............................................ 54, 875
Benutzer ANONYMOUS ................................ 805
Benutzer APEX_050100 ............................... 804
Benutzer APEX_PUBLIC_USER .................. 804
Benutzer APEX_REST_PUBLIC_USER ..... 805
4530.book Seite 885 Donnerstag, 7. September 2017 3:59 15
Index
886
APEX (Forts.)
Benutzer FLOWS_FILES ................................ 804
Benutzereingaben aufbereiten .................. 708
Best Practice ..................................................... 876
Browserkompatibilität .................................... 52
Cache ...................................................................... 52
CSS ........................................................................... 53
Data Layer ......................................................... 877
Daten speichern .............................................. 709
Datenmodellierung ....................................... 711
Debug .................................................................. 877
Display Point .................................................... 877
Eingaben validieren ....................................... 709
Entwicklung komplexer Anwendungen 703
Font Apex ........................................................... 878
Font Awesome ................................................. 878
Grid ....................................................................... 878
HTTP-Session ....................................................... 51
IDE ........................................................................ 879
Installation ........................................................ 859
Internationalisierung ................................... 722
JavaScript .............................................................. 53
Komponenten ..................................................... 51
Legacy ................................................................. 879
mandantenfähig ............................................. 716
ORDS ....................................................................... 53
Organisation des Codes ............................... 704
Preference .......................................................... 880
Prozess ................................................................ 880
Region ................................................................. 881
Rendern .............................................................. 881
Request .................................................................. 52
Response ............................................................... 52
Responsive Design .......................................... 881
Schemata ........................................................... 719
Seitenbereich .................................................... 881
Seitenelement ................................................... 881
Session-ID .......................................................... 881
Sessionstatus .................................................... 484
Shortcut .............................................................. 882
Show Process ....................................................... 55
Speicherung von Dateien ............................ 575
Submit ................................................................. 882
Template ............................................................ 882
Theme ......................................................... 229, 882
ThemeRoller ...................................................... 882
Thick Database Paradigma ........................ 705
Trennung von Daten und Logik ................ 713
Trennung von Logik ...................................... 708
URL ....................................................................... 198
Widget ................................................................. 882
Workspace .................................................. 56, 882
APEX Anwendung � Anwendung
APEX-Installation ................................................ 859
Administrator erstellen ................................ 867
bestehende Installation entfernen ........... 863
Buch-Datenbankschema ............................. 868
Buch-Workspace ............................................. 869
Buch-Workspace installieren ..................... 868
CSS- und JavaScript-Dateien ...................... 868
Datenbankbenutzer freischalten .............. 868
Einrichtung von REST .................................... 867
Installation von ORDS .................................. 860
Installation von Tomcat .............................. 859
Nacharbeiten .................................................... 867
neue Version installieren ............................. 864
Read-Only-Modus ........................................... 866
Verzeichnis debug .......................................... 864
Verzeichnis oracle/apex ............................... 864
Verzeichnis support ....................................... 864
Verzeichnis templates ................................... 864
vollständige Installation ............................. 865
Vorarbeiten ....................................................... 865
Application Builder ......................................... 89–90
Exportieren/Importieren ................................ 91
gemeinsame Komponenten .......................... 91
Seitendesigner ..................................................... 91
Unititys .................................................................. 91
unterstützende Objekte ................................... 91
Applikationsserver ................................................ 48
Assistent
Formular ............................................................ 244
Seite ...................................................................... 244
Authentifizierung ........................................ 72, 763
Abmeldung ........................................................ 768
Anmeldung ........................................................ 766
APEX_AUTHENTICATION ........................... 769
APEX_CUSTOM_AUTH ................................. 769
APEX_LDAP ....................................................... 769
APEX_UTIL ........................................................ 769
Authentication API ........................................ 768
Funktion in APEX ............................................ 766
Single Sign-On .................................................. 773
Verfahren ........................................................... 764
Verfahren erstellen ......................................... 769
Authentifizierung � Sicherheit
Automatisiertes Testen ..................................... 699
APEX Test Automation Framework ........ 700
Komponententest ........................................... 699
PL/SQL-Code ..................................................... 699
Weboberfläche ................................................. 700
Autorisierung ........................................ 72, 763, 774
Anwendung zur Benutzerverwaltung .... 775
4530.book Seite 886 Donnerstag, 7. September 2017 3:59 15
Index
887
Autorisierung (Forts.)
Benutzerverwaltung, Anwendung ........... 779
Benutzerverwaltung, Datenmodell ......... 776
Benutzerverwaltung, Logik ........................ 778
Benutzerverwaltung, Verwendung .......... 781
Autorisierung � Sicherheit
B
Badge List � Liste
Beispieldatenbank .............................................. 841
herunterladen .................................................. 842
Installation ............................................... 841, 845
Prüfung der Installation .............................. 850
Benutzeroberfläche ............................................ 102
Benutzeroberfläche � Anwendung
Berechnung � Prozess, Seitenprozess
Bericht ............................................................. 142, 397
Aktions-Menü ................................................... 161
Anlegen ............................................................... 156
basierend auf Funktion ................................ 412
Darstellung ....................................................... 401
dynamisch aktualisieren ............................. 188
editieren ............................................................. 184
Export als CSV/XML ...................................... 402
Filter ..................................................................... 186
filtern über Mehrfachauswahl ................... 349
generischer Spaltenname ............................ 400
interaktiver ....................................................... 158
interaktives Grid .................................... 156, 168
klassischer ................................................ 165, 397
Layout ................................................................. 400
Quelle .......................................................... 159, 398
SQL-Editor .......................................................... 399
Template ............................................................ 402
weiterzuleitende Seitenelemente ............. 399
Berichtstemplate ................................................. 402
Alert ...................................................................... 404
Badge List .......................................................... 406
Cards .................................................................... 406
Comments ......................................................... 406
Search Results .................................................. 407
Timeline .............................................................. 409
Value Attribute Pairs ..................................... 410
Best Practice � APEX
Bootstrap � JavaScript
Breadcrumb � Liste
Browser ............................................. 45, 47, 188–189
Electron .................................................................. 47
Entwicklerwerkzeuge .................................... 188
Kompatibilität .................................................... 45
Browser (Forts.)
Sessionstatus .................................................... 189
Button � Schaltfläche
C
Chart � Grafik
CLDR ......................................................................... 512
Code Review ................................................. 669, 693
Advisor ................................................................ 695
Application Standards Tracker ................. 696
Suche .................................................................... 694
Collection ................................................................ 476
Anwendungsbeispiel ..................................... 481
erzeugen ............................................................. 477
löschen ................................................................ 480
Methoden ........................................................... 480
schreiben ............................................................ 478
Collection-API � Formular
Content Delivery Network (CDN) � JavaScript
CSS � Anwendung
CSS � HTML
Cursor � JET
D
D3 � Grafik
Data Dictionary � APEX Data Dictionary
Data Layer � APEX
Data Load-Definition � Seite
Database Express Control ................................ 850
Daten laden � Formular
Datenbank ................................................................. 48
instead of-Trigger ........................................... 879
JDWP .................................................................... 879
komplexe View ................................................ 879
OWA ..................................................................... 880
Pipelined Function ......................................... 880
Sequenz ............................................................... 881
Synonym ............................................................ 882
Tabellenfunktion ............................................ 880
Datepicker � Element, Datumsauswahl
Debug � APEX
Debugging ..................................................... 669, 683
Anwendung ....................................................... 200
APEX_DEBUG ................................................... 683
Dynamic Action .............................................. 686
ohne APEX ......................................................... 692
Plugin .................................................................. 686
Remote Debugging ........................................ 688
Tracing ................................................................ 687
4530.book Seite 887 Donnerstag, 7. September 2017 3:59 15
Index
888
Deployment .................................................. 723, 733
Anwendung ....................................................... 733
Anwendungskomponente ........................... 736
begleitende Dateien ....................................... 737
Strategie ............................................................. 725
Unterstützende Objekte ............................... 736
Workspace ......................................................... 728
Workspace exportieren ................................ 798
Diagramm .............................................................. 507
Achse .................................................................... 511
Animation ......................................................... 515
Ausführungsoption ........................................ 507
automatische Aktualisierung .................... 517
Darstellung ....................................................... 509
Datencursor ...................................................... 514
Datenreihe ......................................................... 507
Einstellung ......................................................... 515
Label ..................................................................... 510
Layout ................................................................. 514
Legende ............................................................... 516
Quelle ................................................................... 507
Quickinfo ........................................................... 515
Spaltenzuordnung ......................................... 508
Teilung ................................................................ 512
Überschrift ......................................................... 513
Display Point � APEX
Dynamische Aktion ................................... 126, 531
Aktion ......................................................... 175, 541
Aktionstyp ......................................................... 542
Aktionstyp Ausführen ................................... 543
Aktionstyp Benachrichtigung ................... 545
Aktionstyp Komponente ............................. 546
Aktionstyp Navigation ................................. 549
Aktionstyp Stil, Verschiedenes .................. 550
Anlegen ............................................................... 175
apex.jQuery ....................................................... 563
apex.server ........................................................ 562
apex.widget ....................................................... 562
Ausführungsoption ............................... 535, 542
Bedingung vs. Dynamic Action ................. 281
Bericht aktualisieren ..................................... 188
betroffenes Element ....................................... 176
Callback .............................................................. 560
clientseitige Bedingung ................................ 538
Definition ........................................................... 532
Einsatz vermeiden .......................................... 569
Einsatzbereich .................................................. 572
Ereignis ............................................................... 175
Ereignis/Event ......................................... 535, 537
erweitert ............................................................. 539
Eventhandling .................................................. 559
Dynamische Aktion (Forts.)
für mobile Endgeräte .................................... 753
Integration ........................................................ 573
JET ......................................................................... 569
jQuery .................................................................. 551
Promise ............................................................... 564
Pyramid of Doom ........................................... 564
schreibgeschützt vs. Dynamic Action ..... 284
Typ ........................................................................ 535
Verwendung ...................................................... 532
vs. Status Chart Toolkit ................................ 500
Wenn (Ereignis) ................................................ 535
E
editierbares Grid � interaktives Grid
Element ................................................ 315, 317, 324
ausgeblendet .................................................... 359
automatisch vervollständigen .................. 350
Darstellung ........................................................ 319
Datei durchsuchen ......................................... 356
Datenbankspalte ............................................ 322
Datepicker ......................................................... 877
Datumsauswahl .............................................. 353
Einstellungen .................................................... 316
erweitert ............................................................. 320
Farbauswahl ..................................................... 355
FullCalendar ..................................................... 878
Grid Layout ....................................................... 317
Hilfe ...................................................................... 333
Kennwort ........................................................... 334
Kommentar ....................................................... 334
Konfiguration .................................................. 333
Kontrollkästchen ............................................ 347
Layout ................................................................. 317
Listen-Manager ............................................... 344
nur anzeigen ..................................................... 315
Optionsgruppe ................................................. 347
PL/SQL ................................................................. 325
Popup-Werteliste ............................................ 345
Quelle ................................................................... 321
Quick Pick/Schnellauswahl ............... 335, 880
Rich Text Editor ............................................... 337
schreibgeschützt ............................................. 329
serverseitige Bedingung ............................... 329
Shuttle Control ................................................. 881
Sicherheit ........................................................... 331
SQL-Abfrage ...................................................... 325
Standard ............................................................. 328
statischer Wert ................................................. 322
Textbereich ........................................................ 337
4530.book Seite 888 Donnerstag, 7. September 2017 3:59 15
Index
889
Element (Forts.)
Textfeld ............................................................... 334
verwendet .......................................................... 326
Voreinstellung ................................................. 326
Wechseln (Ja/Nein) ......................................... 342
Werteliste ........................................................... 319
wertelistenbasiert ........................................... 339
Entwicklerwerkzeuge ......................................... 188
Netzwerk ............................................................ 188
Entwicklung im Team ........................................ 739
Aufteilung des Codes ..................................... 740
mitgelieferte Anwendungen ...................... 744
Team Development ....................................... 742
Entwicklungsumgebung � IDE
Entwicklungsumgebungen ................................ 49
Export � Deployment
Export/Import ......................................................... 91
F
Feedback � Anwendung
Fehlerbehandlung ............................................... 669
APEX_ERROR .................................................... 670
apex.message ................................................... 681
Logger ................................................................. 675
PL/SQL Instrumentation Toolkit PIT ...... 677
Flash � Adobe Flash
Flot � Grafik
Font Apex � APEX
Font Awesome � APEX
Formular ........ 121, 127, 132, 240, 244, 250, 443
Aktualisierung von Views ........................... 443
anlegen ............................................................... 168
Assisten verarbeiten ...................................... 249
Assistent ............................................................. 244
Assistent erstellen ........................................... 245
auf Tabellenzeile ............................................. 443
Ausschluss der Standardprozesse ............ 444
basierend auf Bericht .................................... 241
basierend auf Prozedur ................................ 243
basierend auf SQL-Abfrage ......................... 244
basierend auf Tabelle .................................... 243
basierend auf Web Service .......................... 244
Berechnung .............................................. 133, 176
Codegenerator ................................................. 453
Collection-API ......................................... 476, 876
Daten lesen ........................................................ 128
Daten-Ladeseite bedienen ........................... 254
Daten-Ladeseite erstellen ............................ 251
Datenverarbeitung ........................................ 135
editierbares Grid ............................................. 241
Formular (Forts.)
Grid ....................................................................... 458
interaktives Grid ............................................. 241
komplexes ................................................. 446, 451
komplexes Formular, Projektbeispiel ..... 455
Laden von Daten ............................................. 250
Parameterübergabe ....................................... 182
PL/SQL-Prozess ................................................ 453
Primärschlüssel ............................................... 169
Rowid ................................................................... 169
Standardseitenprozess ................................. 453
Status Chart Toolkit (SCT) ........................... 485
Submit ................................................................. 132
Tabelle ................................................................. 458
Validierung ........................... 133, 174, 178, 457
Validierung erstellen ..................................... 180
Verarbeitung .................................................... 132
Verarbeitung in der Datenbank ................ 136
Verzweigung ..................................................... 136
View mit Instead of-Trigger ........................ 452
FullCalendar � Element
G
Gemeinsame Komponenten ... 91, 98, 171, 878
Anwendungslogik ........................................... 100
Aufgabe .............................................................. 104
Benutzeroberfläche ........................................ 102
Bericht ................................................................. 103
Datei ............................................................ 102, 230
Datenreferenz .................................................. 103
Erstelloption (Build Option) ........................ 235
Globalization .................................................... 103
Komponenteneinstellung ............................ 101
Navigation ........................................................ 101
Navigationsmenü ........................................... 159
Plugins ................................................................ 101
Shortcut .............................................................. 101
Sicherheit ........................................................... 100
Textnachricht ................................................... 831
weitere Komponenten .................................. 100
Wertelisten ........................................................ 100
Globale Seite � Seite
Grafik ............................................................... 144, 503
amCharts ........................................................... 875
AnyChart ............................................................ 875
D3 .......................................................................... 877
Dashboard ......................................................... 524
Diagramm ......................................................... 507
erstellen ..................................................... 189, 505
Flot ........................................................................ 878
4530.book Seite 889 Donnerstag, 7. September 2017 3:59 15
Index
890
Grafik (Forts.)
Gantt .................................................................... 517
Gantt-Attribute ............................................... 520
Gantt-Datenreihe ........................................... 519
JET ......................................................................... 525
Kombinationsdiagramm ............................ 525
Plugin .................................................................. 528
technischer Hintergrund ............................. 503
Grid ........................................................................... 458
Aktionen-Menü ............................................... 417
Ansichten ........................................................... 420
Autorisierung ................................................... 465
bearbeiten .......................................................... 426
Bedienung .......................................................... 417
Beispielformular ............................................. 460
Benutzer können ............................................. 430
Berichtsansicht ................................................ 420
Darstellung ....................................................... 427
Detailansicht .................................................... 422
editierbar, bearbeiten ................................... 462
editierbar, Spaltenattribut .......................... 465
Einzelsatzansicht ............................................ 424
erweitert ............................................................. 431
Filterung über URL ......................................... 442
Formular, Seitenelemente ........................... 461
Grundfunktion ................................................. 416
herunterladen .................................................. 430
interaktives ....................................................... 415
JavaScript-Code ............................................... 432
manuelle Verarbeitung ................................ 471
Multiple Selection ........................................... 436
Nachrichten ...................................................... 428
Optionen ............................................................ 426
Oracle Text ........................................................ 438
Performance ..................................................... 427
Row Header ....................................................... 435
schreibgeschützt ............................................. 467
Seitenumbruch ................................................ 427
Spalten ................................................................ 439
Speicherung von Bericht .............................. 440
Standard ............................................................. 466
Symboldarstellung ......................................... 420
Symbolleiste ...................................................... 428
Überschrift ......................................................... 430
Validierung ....................................................... 466
verlorenes Update .......................................... 463
vs. interaktiver Bericht ................................. 440
Grid Layout ................................................... 166, 287
Element ............................................................... 317
Grid � APEX
Grid-UI
Advanced Delete ............................................. 469
Delete only ......................................................... 468
Editing in Dialog ............................................. 470
Form with Grid ................................................. 470
Master Detail .................................................... 470
Validation .......................................................... 467
GRML, CSS ............................................................... 877
H
Hash-Code .............................................................. 878
HTML ........................................................................ 878
Constraint Validation ................................... 468
DOM-Baum ....................................................... 877
Escape von HTML ........................................... 878
HTTP-Header .................................................... 664
HTTP-Stream .................................................... 879
iframe .................................................................. 879
Media Query ..................................................... 880
Redirect ............................................................... 881
Screen Reader-Software ............................... 881
Selenium ............................................................. 881
URI vs. URL ........................................................ 648
HTTP ..................................................................... 41, 51
HTTP-Stream � HTML
I
IDE ................................................................................ 87
Application Builder ........................................... 89
Einstiegsseite ....................................................... 88
Mitgelieferte Anwendung ............................... 89
SQL Workshop ..................................................... 89
Team Development ........................................... 89
IDE � APEX
iframe � HTML
IIFE � JavaScript
Import
Deployment ...................................................... 733
Export/Import ..................................................... 91
instead of-Trigger � Datenbank
interaktiver Bericht � Region
Interaktives Grid ............................... 241, 415, 879
editierbares Grid ............................................. 877
Master/Detail ................................................... 242
Internationalisierung ..... 46, 103, 211, 722, 823
Anwendung übersetzen ............................... 825
Anwendungssprache definieren ............... 826
Anwendungssprache wählen ..................... 823
4530.book Seite 890 Donnerstag, 7. September 2017 3:59 15
Index
891
Internationalisierung (Forts.)
Datum und Zeit ............................................... 835
dynamische Übersetzung ............................ 833
Herausforderung ............................................ 834
Icons und Schreibrichtung .......................... 837
kulturelle und gesetzliche Unterschiede 836
Stammdaten ..................................................... 834
Text übersetzen ............................................... 830
Text vordefinieren .......................................... 827
Textnachricht ................................................... 831
Übersetzung veröffentlichen ...................... 830
Übersetzungs-Repository ............................ 834
weitere Werkzeuge ......................................... 831
XLIFF .................................................................... 828
XLIFF-Datei anwenden ................................. 830
XLIFF-Datei laden ........................................... 828
J
JavaScript ....................................................... 217, 551
Action .................................................................. 434
apex.item ........................................................... 624
apex.message ................................................... 545
apex.server ........................................................ 597
apex.widget .............................................. 624, 637
Bootstrap ........................................................... 876
Content Delivery Network (CDN ............... 877
Datei .................................................................... 574
Delegate ............................................................. 540
Einführung ........................................................ 551
Event .................................................................... 537
Funktion ............................................................. 555
Gültigkeitskontext ......................................... 556
htmldb_delete_message .............................. 573
IIFE ..................................................... 557, 622, 879
JET ......................................................................... 525
jQuery .................................................................. 879
Minifizierung .................................................... 574
Namensraum ................................................... 554
Objekt .................................................................. 552
Promise ............................................................... 880
this ........................................................................ 556
Validator ................................................... 179, 882
Variable .............................................................. 551
Verwendung in APEX .................................... 569
Zusammenfassung ........................................ 577
JDWP � Datenbank
JET ........................................................... 504, 525, 880
Cursor .................................................................. 877
Migration ........................................................... 528
jQuery .................................................... 551, 566, 879
Funktion ............................................................. 568
jQuery Mobile ................................................... 879
jQuery UI ............................................................ 879
Selektor ............................................................... 567
Widget Factory ................................................ 628
K
Kai Donato ............................................................. 745
L
Liste .................................................................. 145, 294
Anwendungsbereich ...................................... 295
Badge List .................................................. 299, 876
Breadcrumb ...................................................... 876
Cards .................................................................... 299
Links List ............................................................. 299
Media List .......................................................... 299
Menu Bar ............................................................ 299
Menu Popup ...................................................... 299
Navigation Bar ................................................ 300
Navigation Menu ............................................ 300
Tabs ...................................................................... 300
Template ............................................................ 299
Werteliste ........................................................... 882
Werteliste (LOV) ............................................... 880
Logging, Anwendung ......................................... 199
LOV ............................................................................ 100
anlegen ............................................................... 171
dynamische Abfrage ...................................... 172
in Formular verwenden ................................ 173
NULL-Wert ......................................................... 173
zusätzlicher Wert ............................................ 173
LOV � Liste
M
MIME-Typ ............................................................... 358
Mitgelieferte Anwendung ................................... 89
Sample Database Application ................... 115
Modaler Dialog � Seite
N
Navigationskürzel ............................................... 871
Aktionen ............................................................. 871
Anwendungsseite ........................................... 871
APEX-Administration .................................... 871
Application Builder ........................................ 872
4530.book Seite 891 Donnerstag, 7. September 2017 3:59 15
Index
892
Navigationskürzel (Forts.)
Benutzeroberfläche ........................................ 872
Benutzerverwaltung ...................................... 872
Entwicklerleiste ............................................... 872
Entwicklungswerkzeuge .............................. 873
gemeinsame Komponenten ....................... 873
mitgelieferte Anwendungen ...................... 873
Plugin .................................................................. 873
Regionsattribute ............................................. 873
Seitenattribute ................................................. 873
Spezielle Regionsattribute .......................... 874
Team Development ....................................... 874
UI ........................................................................... 874
Navigationsmenü ............................................... 159
O
ORDS .................................................................. 53, 880
P
Plugin ........................................... 101, 126, 581, 880
Aktualisierung ................................................. 588
APEX_JAVASCRIPT ................................ 595, 630
APEX_PLUGIN .................................................. 592
APEX_PLUGIN_UTIL ............................ 601, 633
Arbeitsweise ...................................................... 586
Authentifizierung ........................................... 586
Autorisierung ................................................... 586
Bedingung ......................................................... 607
benutzerdefiniertes Attribut ............. 601, 605
Callback .............................................................. 591
Datei .................................................................... 603
Datentyp T_ITEM_RENDER_PARAM ...... 594
Datentyp T_ITEM_RENDER_RESULT ...... 594
Datentyp T_PAGE_ITEM .............................. 592
Datentyp T_PLUGIN ...................................... 593
Datentyp T_VALUE_LIST ............................. 603
Definition ........................................................... 581
Dynamic Action .............................................. 585
Einstellung ......................................................... 606
Empfehlungen .................................................. 584
Ereignis ............................................................... 604
Export .................................................................. 640
Import ................................................................. 641
Information ...................................................... 605
Initialisierung ................................................... 586
is_navigable ..................................................... 594
is_readonly ....................................................... 594
Item ...................................................................... 585
Plugin (Forts.)
Item-Plugin erstellen ..................................... 608
JavaScript implementieren ......................... 621
JavaScript-Code ............................................... 636
metadata-Methode ........................................ 618
Metadaten ................................................ 589, 629
Metadaten anlegen ........................................ 609
Name ................................................................... 589
options-Objekt ................................................. 623
PL/SQL-Package implementieren ............ 611
Prozess ................................................................ 586
Quelle ................................................................... 590
refresh-Event ..................................................... 627
refresh-Methode ..................................... 620, 632
Region ................................................................. 585
Region Plugin erstellen ................................. 629
render-Methode ...................................... 612, 629
Renderphase ..................................................... 586
Seitenelement initialisieren ........................ 624
Standardattribut ............................................. 599
Standardwert ................................................... 607
Subskription ...................................................... 641
Typ ........................................................................ 584
unterstützt für .................................................. 599
validate-Methode ........................................... 618
Validierung ....................................................... 588
Validierungsmethode ................................... 597
Verwaltungsseite ............................................ 589
Verwendung ...................................................... 587
Vor- und Nachteile ......................................... 581
Warnhinweis ..................................................... 582
Zusammenfassung ......................................... 642
Preferences � APEX, Prozess, Benutzer-
voreinstellung
Prozess ............................................................ 375, 880
automatische Zeilenverarbeitung ........... 375
automatischer Zeilenabruf ......................... 375
Benutzervoreinstellung ................................ 394
Berechnung ....................................................... 876
Dialog schließen .............................................. 396
Einstellungen .................................................... 376
E-Mail senden ................................................... 394
Fetch Row ........................................................... 322
Formularseitenumbruch .............................. 377
Parameterübergabe ....................................... 384
PL/SQL-Code ..................................................... 382
Seitennummerierung zurücksetzen ........ 393
Sessionstatus zurücksetzen ........................ 393
Validierung ....................................................... 883
Webservice ......................................................... 396
4530.book Seite 892 Donnerstag, 7. September 2017 3:59 15
Index
893
Q
Quick Pick � Element
R
Redirect � HTML
Region ................................... 63, 123, 269, 287, 881
Anpassung ......................................................... 285
Anzeigeposition .............................................. 124
Assistent ............................................................. 146
Attribut, allgemeines .................................... 123
Attribut, spezielles .......................................... 124
Baum ................................................................... 300
Bedingung ......................................................... 281
Bericht ................................................................. 142
Darstellung .............................................. 273, 278
dynamischer PL/SQL-Inhalt ....................... 270
Footer .................................................................. 280
Grafik ................................................................... 144
Grid Layout ....................................................... 287
Header ................................................................. 280
Hilfetext .............................................................. 307
ID ........................................................................... 270
interaktiver Bericht ........................................ 879
Kalender ............................................................. 144
Layout ................................................................. 272
Liste ............................................................. 145, 294
Quelle ................................................................... 270
Regionenselektor ............................................ 881
Regionsanzeige/Region Selector .............. 306
Responsive Design .......................................... 293
Schnellbearbeitung ........................................ 167
schreibgeschützt ............................................. 281
Sicherheit ........................................................... 285
Statische ID ....................................................... 278
statischer Inhalt .............................................. 270
Tabulator ........................................................... 304
Template ............................................................ 274
Templateoption ............................................... 277
Tree ....................................................................... 300
Typ ........................................................................ 142
URL ....................................................................... 270
Responsive Design ..................................... 293, 881
REST .............................................. 244, 645, 647, 790
als Bericht darstellen ..................................... 666
in APEX ............................................................... 656
in der Datenbank ............................................ 649
S
Schaltfläche ................................................... 315, 361
Darstellungsoption ........................................ 362
Funktion ............................................................. 364
Position ............................................................... 361
Templateoption ............................................... 363
Schema � APEX-Schema
Schnellauswahl � Element, Quick Pick
SCT ............................................................................. 485
Arbeitsweise ...................................................... 491
Bewertung ......................................................... 499
Problem und Lösungsansatz ...................... 486
verwenden ......................................................... 497
Seite ................................................. 63, 164, 223, 244
Alias ...................................................................... 162
Assistent ............................................................. 876
bei Weiterleitung neu laden ....................... 233
Benutzeroberfläche ........................................ 228
Berechnung ....................................................... 121
Darstellung ........................................................ 228
Data Load-Definition .................................... 877
erstellen .............................................................. 158
Feedback ............................................................. 262
Feedback verwenden ..................................... 266
Feedbackseite erstellen ................................. 263
Fehlerbehandlung .......................................... 235
Footer .................................................................. 231
Formular ......................................... 121, 127, 240
globale ........................................................ 238, 878
Grid Layout ....................................................... 166
Gruppe ................................................................ 224
Header ................................................................. 231
Hilfe ...................................................................... 236
ID ........................................................................... 224
Kommentar ....................................................... 236
leere ...................................................................... 223
Login/Anmeldeseite ....................................... 237
Modale Seite ..................................................... 267
modaler Dialog ................................................ 880
Modus .................................................................. 228
schreibgeschützt ............................................. 231
Seitenelement ................................................... 173
Sicherheit .................................................. 231, 256
Startseite ............................................................ 164
Submit ................................................................. 132
Template ............................................................ 228
Templateoption ............................................... 230
Verarbeitungspackage ................................. 181
Warnung Nicht gesicherte Änderung ..... 189
4530.book Seite 893 Donnerstag, 7. September 2017 3:59 15
Index
894
Seite (Forts.)
Weiterleitung .................................................... 233
Zugriffskontrolle ............................................. 256
Seite � Assistent
Seitendesigner ......................................................... 91
Attributbereich ................................................... 97
Aufbau ................................................................... 92
Canvas ................................................................... 95
Galerie .................................................................... 94
linker Seitenbereich .......................................... 93
Seitenelement ............................. 64, 125, 173, 315
Wert ist erforderlich ....................................... 181
Seitenprozess ............................................... 122, 367
Berechnung .............................................. 367–368
Fehlermeldung ................................................. 372
Name ................................................................... 367
Reihenfolge ....................................................... 367
Seitennummerierung zurücksetzen ........ 374
Sessionstatus zurücksetzen ........................ 374
Validierung .............................................. 367, 370
Verzweigung ............................................ 367, 372
Verzweigungstyp ............................................ 373
Zeitpunkt ............................................................ 367
Session ............................................................ 207–208
Sessionkontext ................................................. 881
Sessionstatus versus Tabelle ...................... 246
Sessionzustand ................................................ 209
Status ................................................................... 807
Timeout .............................................................. 801
Sessionstatus � Browser
Sicherheit ......................... 100, 206–207, 219, 231,
256, 285, 331, 763, 803
Access Control List ACL ................................ 257
Administration ................................................ 809
Anwendungsebene ......................................... 813
Arbeitsweise von APEX ................................. 803
Authentifizierung ........................ 237, 763, 876
Autorisierung .......................................... 774, 876
Autorisierungsschema ................................. 876
Browsersicherheit ........................................... 210
Cookie .................................................................. 219
Cross Site Scripting ........................................ 815
dynamisches SQL ............................................ 814
Einstellungen ........................................... 809, 811
Features konfigurieren ................................. 810
Installation ........................................................ 809
Monitoring ........................................................ 810
Prozedur ............................................................. 805
Schemata von APEX ...................................... 804
Seite ...................................................................... 231
Session und Sessionstatus ........................... 807
Sicherheit (Forts.)
Sessionstatus schützen ................................. 818
Single Sign-On .................................................. 882
Workspace-Ebene ........................................... 812
Zugriff auf APEX .............................................. 803
Zugriffskontrolle ............................................. 256
Single Sign-On � Sicherheit
Sperren
optimistisch ............................................. 139, 710
pessimistisch ........................................... 139, 710
SQL
no_merge-Hint ................................................ 494
SQL Workshop ...................................................... 108
RESTful Service ................................................. 111
Utility ................................................................... 109
SQL*Plus .................................................................. 857
SQL-Developer ............................................. 851–852
Datenbankverbindung ................................. 853
Installation ........................................................ 852
SQL-Anweisung ausführen .......................... 856
Übersicht ............................................................ 853
Submit � Formular
Synonym ................................................................. 714
T
Team Development ............................................ 111
Theme
jQuery Mobile ................................................... 749
jQuery Mobile ThemeRoller ........................ 756
Universal Theme ............................................. 746
Tomcat � Apache Tomcat
Tree � APEX Tree
U
URI � URL
URL .............................................................. 39–40, 198
Utility .......................................................................... 91
V
Validierung � Prozess, Seitenprozess
Verzweigung � Seitenprozess
Voreinstellung � APEX, Preference
W
Webanwendung ...................................................... 41
Architektur ........................................................... 43
Barrierefreiheit ................................................... 46
4530.book Seite 894 Donnerstag, 7. September 2017 3:59 15
Index
895
Webanwendung (Forts.)
Browserkompatibilität .................................... 45
Caching .................................................................. 44
HTTP ....................................................................... 41
Internationalisierung ...................................... 46
Kommunikation ................................................ 42
Sicherheit .............................................................. 44
Webserver
GlassFish ............................................................... 47
IIS ............................................................................. 47
Tomcat ................................................................... 47
WebService ............................................................. 111
Webservice .................................................... 396, 645
Bewertung ......................................................... 667
Definition ........................................................... 645
manuelle Parametererfassung .................. 665
Modul .................................................................. 657
Parameter ................................................. 660, 663
Remot Procedure Call (RPC) ....................... 645
Ressourcen-Handler ...................................... 659
REST ..................................................................... 645
SOAP ........................................................... 645–646
URI-Template ................................................... 658
Workspace-Referenzen ................................. 657
Websheet ............................................................ 62, 67
Abschnitt ............................................................... 75
Anlage einer Anwendung ............................... 79
Anmerkung ................................................... 70, 76
Ansichtsmodus ................................................... 70
Anwenderrecht ................................................... 78
Anwendung erstellen ....................................... 79
Authentifizierung .............................................. 72
Autorisierung ...................................................... 72
Bedienung ............................................................. 68
Beispielanwendungen ..................................... 70
Benutzerrecht einschränken ......................... 83
Datenmodell ........................................................ 77
Datenraster erstellen ........................................ 80
Datenraster/Tabellendaten ........................... 73
Details/Logo ........................................................ 72
Eigenschaft ........................................................... 71
Menüleiste ............................................................ 69
Präsentationsmodus ........................................ 69
Websheet (Forts.)
Seite ......................................................................... 74
Seite hinzufügen ................................................. 82
Seiteninformation ............................................. 69
SQL ........................................................................... 73
Stil ............................................................................ 72
Suche ....................................................................... 69
Systemsteuerung ............................................... 69
Übersicht ............................................................... 68
Verweis ................................................................... 75
Zusammenfassung/Bewertung ................... 85
Werteliste � LOV
Workshop, Anlage einer Websheet-
Anwendung ......................................................... 79
Workspace .................................... 56, 719, 728, 792
Administration ....................................... 104, 792
Anmeldekontrolle ........................................... 800
Anwendung verwalten ................................. 797
Benutzer verwalten ........................................ 796
Berichte ............................................................... 798
Deployment ...................................................... 728
entfernen ............................................................ 795
Erscheinungsbild ............................................. 800
exportieren ........................................................ 798
Informationen bearbeiten .......................... 799
Internal .................................................................. 57
Komponentenverfügbarkeit ....................... 796
mehrere Workspaces erstellen ................... 794
Schema ................................................................ 719
Schemazuordnung .................................. 59, 796
Session-Timeout .............................................. 801
sperren ................................................................ 795
Workspace-Administrator .......................... 883
Workspace-Aktionen ..................................... 793
X
XLIFF ......................................................................... 828
Z
Zeichensatzkodierung ....................................... 358
Zugriffskontrolle � Sicherheit
4530.book Seite 895 Donnerstag, 7. September 2017 3:59 15
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Gerne dür-fen Sie diese Leseprobe empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Die vorliegende Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungs-rechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnolo-gien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Do-zent an der Hochschule der Medien Stuttgart.
Jürgen Sieben
Oracle APEX – Das umfassende Handbuch
895 Seiten, gebunden, September 2017 79,90 Euro, ISBN 978-3-8362-4530-2
www.rheinwerk-verlag.de/4376
Wissen, wie’s geht.