issen ies geh - amazon s3€¦ · lichen konzepte und fachbegriffe von apex ein. direkt im...

38
Leseprobe Zu 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.

Upload: others

Post on 18-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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.

Page 2: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 3: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 4: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 5: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 6: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 7: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 8: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 9: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 10: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 11: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 12: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 13: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 14: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 15: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 16: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 17: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 18: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 19: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 20: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 21: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 22: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 23: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 24: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 25: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 26: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 27: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 28: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 29: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 30: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 31: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 32: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 33: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 34: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 35: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 36: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 37: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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

Page 38: issen ies geh - Amazon S3€¦ · lichen Konzepte und Fachbegriffe von APEX ein. Direkt im An-schluss erfahren Sie mehr über Websheet-Eigenschaften. In einem weiteren Abschnitt werfen

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.