Oracle Application Express (APEX) 19.2 zum Download bereitgestellt – Neue Funktionen

Oracle veröffentlichte am 01.Nov.2019 die APEX Version 19.2.0.00.18. Hier gibt es erste Eindrücke der neuen Funktionen.

Das Wichtigste zuerst. Hier geht es zum Download der neusten APEX Version.

Wenn Sie sich einen Überblick der neuen Features machen möchten, möchte ich Ihnen meinen Artikel zu Oracle Application Express EA 19.2 empfehlen. Dort finden Sie eine Beschreibung der interessantesten Neuerungen.

 

Oracle APEX 19.2 Early Adopter veröffentlicht

Oracle APEX 19.2: Erste Eindrücke zur Early Adopter online Version gibt es hier.

Über die URL https://tryapexnow.com können Sie einen Workspace für die neuste APEX Vorabversion 19.2 beantragen. Dort finden Sie auch eine Aufstellung der neuen Features.

Im Folgenden habe ich Ihnen einige Eindrücke zusammengetragen.

Enhanced Pop-up LOV

Definieren Sie eine LOV über die Shared Components, so können Sie in der neuen APEX Version mehrere Spalten zur Auswahl anbieten.

Abbildung 01: Multicolumn LOV

Auch eine Mehrfachauswahl der Listeneinträge ist bei dem neuen Item möglich.

Abbildung 02: Mehrfachauswahl

In den Vorgängerversionen von APEX 19.2 wurden in vielen Bereichen Rest Services als Datenquellen eingeführt. Diese Möglichkeit haben Sie jetzt auch bei den List of Values. Hier steht Ihnen als Datenquelle die Lokale Datenbank aber auch RESTful Web Services und REST Enabled SQL zur Verfügung. Statische LOVs gibt es natürlich auch noch.

Abbildung 03: New Data Sources

Start Rating Item

Das Star Rating Item zeigt einen nummerischen Wert in Form von Sternchen-Listen an. Sie können aber auch anderer Icons aus den Icon-Schriftarten einsetzen.

Abbildung 04: Star Rating Item

Markdown Editor

Ein weiteres Item, welches mit APEX 19.2 dazu gekommen ist, ist der Markdown Editor über den Sie formatierte Texte sehr einfach erstellen und anzeigen können. (Mehr zu Markdown hier bei Wikipedia)

Interessant ist das vor allem für automatisch erzeugten Text. Das Prinzip ist einfach. Die Formatierung der einzelnen Textpassagen wird durch verschiedenen textuellen Markierungen festgelegt.

Abbildung 05: Markdown Editor

Über Preview des Items lässt sich die formatierte Variante des Textes eingeblendet.

Abbildung 06: Preview Markdown Editor

REST Enabled Interactive Grid

Wie auch in der Vorgänger Version in anderen Bereichen eingeführt, bietet das Interactive Grid die nun die Möglichkeit als Datenquelle REST Enabled SQL und Web Services zu verwenden. Auch der schreibende Zugriff auf Remote Datenquellen steht zur Verfügung.

Debug Level

Ein anderes neues Feature versteckt sich in der Developer Toolbar. Sie können dort über die Eigenschaften den Debug-Trace-Level einstellen.

Abbildung 07: Debug Level

Data Loading

Die Upload Funktion im SQL Workshop wurde so erweitert, dass Sie jetzt native EXCEL, CSV,XML und JSON  Dateien direkt in Datenbanktabellen importieren können.

Sie finden die neue Funktion im SQL Workshop > Utilities > Data Workshop.

Abbildung 08: Data Loading

Faceted Search

Die wohl interessanteste Neuerung verbirgt sich hinter dem neuen Region Typ “Faceted Search”. Die neue Funktion verbirgt sich hinter der gleichnamigen  Region. Diese Region kann an ein Statischen Report gebunden werden und bietet einen intuitiven Filter. Durch setzten von Filterkriterien, wird der Inhalt der Tabelle gefiltert. Aber auch die anderen abhängigen Filterkriterien werden so gefiltert, dass nur noch die Möglichen Varianten angezeigt werden.

Faceted Search soll in zukünftigen APEX Versionen auch noch bei anderen datengebundenen Regionen und Items angewendet werden können

Abbildung 09: Faceted Search

Oracle APEX 19 Tutorial Teil 5 – Process and Condition

Dieser Teil des Oracle APEX Tutorials zeigt Ihnen, wie Sie Prozesse und Bedingungen ( Conditions ) in Ihren Anwendungen nutzen können.

Es ist ein wenig Zeit vergangen, seid dem ich den Teil 4 des APEX Einsteiger-Tutorials verfasst habe.  Die bisherigen Beschreibungen basierten noch auf der APEX Version 18.2. Diesem Artikel liegt nun die Version 19.1 zu Grunde, so dass Sie sich direkt mit dieser APEX Version vertraut machen können.

Noch einmal zur Erinnerung. Im letzten Artikel (Teil 4)  habe ich beschrieben, wie Sie für eine Tabelle eine Übersichtsseite und eine Form zum Erfassen und Bearbeiten des Tabelleninhaltes erstellen können.

Abbildung 34: APEX Form
Abbildung 34: APEX Form

Die Abbildung 34 zeigt Ihnen den Ausgangspunkt für dieses Tutorial. Für jede Spalten der Tabelle (NAMEN) wurde in der erstellen Form ein Feld – in APEX Item genannt – eingefügt. Je nach Spaltentyp wurden verschiedene Item-Typen verwendet.

Bei den letzten vier Items der Seite handelt es sich um Audit-Spalten in denen der Ersteller, das Erstellungsdatum sowie den letzten Änderer inkl. Änderungszeitpunkt erfasst werden sollen. 

Life-Cycle

Um zu verstehen, wie und wann ein sogenannter Process in einer APEX-Seite ausgeführt wird, ist es sinvoll sich zu vergegenwärtigen, wie eine Seite erzeugt wird.

Initial wird eine Seite durch einen Seitenaufruf per URL (http get) vom APEX-Web-Server angefordert. Der Web-Server reicht den Aufruf an die Datenbank weiter und führt dabei die PL/SQL Funktion f aus. Die Parameter, die der URL respektive dem http get request mitgegenen wurden, werden als Parameter an f  übergeben. In Abhängigkeit des aktuellen Session-Zustands, welcher im sogenannten Session-Cache gehalten wird, und den übergebenen Parametern, rendert f die neuen HTML-Seite. Diese wird dann als Antwort an den Client zurück geschickt. In anderen Szenarien erfolgt die Anfrage (Requests) mittels http-put, wobei sich der Ablauf aber ähnelt.

Im Rahmen dieses klassischen Anfrage- Antwortzyclusses ermöglicht es APEX Ihnen zu verschiedenen Zeitpunkten sogenannte Processes in der Datenbank auszuführen.

Prozess

Es gibt verschiedene Typen von Prozessen. Sie können z.B. vorgefertigte Prozesse verwenden, um Date aus einer Form in die Tabellen der Datenbank zu übertragen. Sie können eigene PL/SQL – Prozesse erstellen oder auch Web Services aufrufen, Mails versenden und vieles mehr.

Für dieses Beispiel sollen die Audit-Felder automatisch mit den entsprechenden Werten versehen werden.  

PL/SQL-Process erstellen

Eine oft genutzte Variante sind Prozesse, die Sie in PL/SQL erstellen können. Um so einen Prozess anzulegen gehen Sie wie folgt beschrieben vor.

Ausgehend von der Seite 3, welche in Abbildung 34 zu sehen ist, klicken Sie in der Developer Toolbar auf den Button “Edit Page”. 

Abbildung 35: APEX Create process
Abbildung 35: APEX Create process

Im Page Designer finden Sie, wie in Abbildung 35 zu sehen ist, die Möglichkeit einen neuen Prozess zu erstellen. Das geht z.B. über das Kontextmenü des Knotens process.

Geben Sie dem Prozess über seine Eigenschaften einen Namen (ID) und wählen sie als Typ PL/PQL-Code. Im Bereich source können Sie nun Ihren Quellcode unterbringen. 

In diesem Beispiel sollen das Item P3_CHANGED_BY und P3_CHANGED_ON mit einem Wert versehen werden.

Um auf ein Item zuzugreifen, stellen Sie dem Item-Namen einfach ein : voran. So können Sie z.B. über :P3_CHANGED_BY := :APP_USER;  den Namen des angemeldeten Users dem Item zuweisen. Abbildung 36 zeigt den kompletten Quellcode für dieses Beispiel.

Abbildung 36: PL/SQL Process
Abbildung 36: PL/SQL Process

Wie Sie dort sehen können, wird über sysdate noch der aktuelle Zeitpunkt einer Änderung ermittelt. Dieser wird allerdings als Char entsprechend formatiert dem Item zugewiesen. Achten Sie darauf, dass die Formatmaske hier mit der des Items übereinstimmt.

Abbildung 37: Formatmask
Abbildung 37: Formatmask

Anschließend bietet es sich noch an, die beiden Items in der Seite 3 auszublenden.

Abbildung 38: Hidden
Abbildung 38: Hidden

Das können Sie recht einfach bewerkstelligen. Markieren Sie dazu im Page Designer die beiden Items un d ändern Sie den Item-Typ auf Hidden (Ausgeblendet).

Wenn Sie nun über die Seite 3 einen neuen Eintrag erfassen oder einen vorhandenen Eintrag ändern, wird der Zeitpunkt der Änderung und der Name des Users vermerkt.

Conditions – Bedingte Prozesse

Wie Sie sicher bemerkt haben, wird der eben erstellte Prozess bei jeder Änderung in der Seite ausgeführt. Für das Speichern des Erstellzeitpunktes und des Erstellers eines neuen Datensatzes wurden der Seite und der Tabelle die beiden Items P3_CRETED_BY und P3_CREATED_ON zugefügt.

Um die Werte dieser beiden Items über einen weiteren Prozess zu setzten, können Sie wie im vorherigen Beispiel einen Prozess erstellen, der via. PL/SQL die Items setzte. Allerdings soll dieser Prozess nur einmalig ausgeführt werden, wenn ein neuer Datensatz angelegt wird. Für solche Fälle nutzen Sie in APEX sogenannte conditions.

Über eine condition können Sie beispielsweise prüfen, ob ein bestimmter Button gedrückt wurde. Sie können über diese Bedingungen feststellen, ob ein Item null ist oder einen definierten Wert besitzt. Für komplexere Prüfungen nutzen Sie einfach SQL oder PL/SQL.

Abbildung 39: Condition
Abbildung 39: Condition

Eine condition definieren Sie über die Eigenschaften eines Prozesses. Dort finden Sie unter conditions – in der deutschsprachigen Version “Serverseitige Bedingung” genannt – verschiedene Möglichkeiten. Für dieses Beispiel genügt es, den Prozess nur dann ausführen zu lassen, wenn der Button CREATE betätgt wird. 

Redirect Oracle Application Express (APEX)

Nutzen Sie den Wartungsmodus einer APEX Anwendung, um diese umzuleiten. Dies kann z.B. hilfreich sein, um eine neue Version der APEX Anwendung auszurollen.

Möchten Sie in einer Produktivumgebungen eine APEX-Applikation gegen eine neue Version tauschen, haben Sie verschiedene Möglichkeiten dies zu bewerkstelligen.

Erzeugen Sie eine neue Version Ihrer Anwendung vergibt APEX eine neue App-Id, die zum Aufruf des Programms in der URL angegeben werden muss. Damit die Nutzer die neue Version aufrufen können, müssen Sie eine neue URL verteilen. Natürlich gibt es dafür einige Wege.

Ich möchte Ihnen hier eine Variante vorstellen, wie Sie dies elegant mit dem Wartungsmodus einer APEX APP durch Umleitung auf die neue Version der Anwendung erledigen können.

Redirect mittels Wartungsmodus

Legen Sie im ersten Schritt die neue Version der Anwendung in Ihrer Produktivumgebungen an. Es ist egal, ob Sie eine neue Version aus Ihrem Entwicklungssystem per Export/Import transportieren oder eine Kopie der Vorgänger Version anlegen und diese weiter entwickeln.

Abbildung 01: Alte und neue Version einer APEX Anwendung

Der Ausgangspunkt für diesen Tipp ist eine produktive Anwendung und eine parallel installierte neue Version.

Im ersten Schritt ermitteln Sie die URL, mit der Sie das neue Programm aufrufen.

https://apex.oracle.com/pls/apex/f?p=<APP_ID>:LOGIN_DESKTOP::::::

Öffnen Sie nun die alte Anwendung im Application Builder und navigieren Sie zu den Anwendungseigenschaften. (Edit Application Properties)

Abbildung 02: Edit Application Properties

Dort finden Sie im Bereich “Availability” die Select-Liste Status. Dort können Sie eine APEX-Anwendung z.B. in den Wartungsmodus versetzen oder die Nutzung komplett unterbinden. 

Selektieren Sie die Option “Unavailiable (Redirect to URL)”. Im Feld “Message for unavailable application” tragen Sie die URL der neuen Anwendung ein.

Abbildung 03: Unavailable (Redirect to URL)

Jetzt wird beim Aufruf der alten Anwendung ein Redirect auf die neue Version durchgeführt.

Oracle Application Express (APEX) 19.1 Download bereitgestellt – Neue Funktionen

Oracle hat die APEX Version 19.1.0.00.15 zum Download bereitgestellt. Hier finden Sie einen ersten Eindruck der neuen Funktionen.

Formulare

APEX wird auch in diesem Release weiter auf REST-Services getrimmt. Mit den sogenannten REST-Enabled Forms ist es möglich, Schreib- und Lesevorgänge auf Basis von REST Enabled SQL in Web Sources in Seiten bzw. Regionen ohne Programmierung zu verwenden. Sie können also Seiten mit Formularen, Diagrammen, Kalendern und Berichten auf der Grundlage von REST Services erstellen.

Abbildung 1: APEX 19.1 – REST-Enabled Forms

REST Enabbled Database Objects

Auch die Integration des Oracle REST Data Services (ORDS) in APEX wurde optimiert. Es ist nun möglich, aus dem SQL Workshop heraus per Klick für eine Tabelle einen REST API zu generieren. Das Ganze funktioniert auch für Views und Procedures.

Abbildung 2: Erzeuge REST API

Die so erzeugte REST-API wird dann auch in den RESTful Services angezeigt.

Abbildung 3: RESTful Services

Data Loading

Auch das Importieren von Daten wurde einer Frischzellenkur unterworfen. APEX unterstützt nun das einfache Laden von CSV, json, nativen Excel Dateien (xlsx) mit mehreren Tabellen und XML. Über das neue Data-Loading können diese Quelldaten in neue Tabellen in die Datenbank importiert werden. Das Importieren in bereits vorhandene Tabellen soll mit Version 19.2 kommen.

Abbildung 4: Import einer JSON Datei

Die Importfunktionen stehen aber nicht nur über die Oberfläche, sondern auch über das PL/SQL Package APEX_DATA_PARSER zur Verfügung.

Interaktives Grid

Dem Interaktiven Grid wurden diverse Eigenschaften hinzugefügt.

Abbildung 5: Neue Eigenschaften des Interactive Grids

Jet Chart

APEX unterstützt in der Version 19.1 jetzt auch JET Status Meter Gauges.

Abbildung 6: JET Status Meter Gauges.

Dark Mode

Einem allgemeinen Trend folgend, wurde APEX auf ein Dark Mode hinzugefügt.

Diesen können Sie über Ihr Benutzerprofil aktivieren.

Abbildung 7: Dark Mode aktivieren
Abbildung 8: APEX Application Builder im Dark Mode:

Deprecated Features

Oracle hat einige Funktionen als deprecated eingestuft. Diese Funktionen werden in zukünftigen Releases von APEX entfernt. Eine genaue Auflistung finden Sie in der Release Notes.

Tipp: Sie können sich für Ihre APEX Anwendungen über den Oracle Application Express Advisor anzeigen lassen, welche der von Ihnen verwendeten Features veraltet sind.

Der Team Developer wird in einer neuen Version durch ein neues System zum Tracken von Rückmeldungen, Problemen und Meilensteinen ersetzt.

Ebenso werden Sie zukünftig auf die Komponenten von AnyChart, AnyMap und AnyGantt verzichten müssen. Hier stellt Ihnen Oracle aber als Alternative die reichhaltige Palette aus dem Oracle JET Framework zur Verfügung. Wie Sie Ihre alten Charts zu Oracle JET überführen können, ist im Apex Benutzerhandbuch beschrieben.

Des Weiteren wird das Template für Pop-up LOVs nicht weiter unterstützt. Hierfür wird es in Apex 19.2 laut Statement of Direction ein Enhanced Pop-up LOV geben.

Oracle APEX 18.2 Tutorial Teil 4 – Page Designer

Im 4 Teil des deutschsprachigen Oracle APEX Einsteiger Tutorial geht es um die Erstellung von Seiten mit dem Page Designer.

Der Page Designer ist das zentrale Werkzeug mit dem in APEX Seiten erzeugt und bearbeitet werden. Gerade bei diesem Tool wird der zentrale Ansatz der Low Code Entwicklung von APEX sichtbar. APEX nutzt in vielen Fällen die Metadaten aus der Datenbank, um daraus Elemente einer Seite zu erzeugen. Die Elemente eines APEX Seite werden über deren Eigenschaften definiert. Deshalb entwickeln Sie Anwendungen mit APEX deutlich schneller als mit herkömmlichen Programmieransätzen.

Öffnen des Page Designers

Es stehen Ihnen verschiedene Möglichkeiten zur Verfügung, den Page Designer zu starten.

Im Letzten Teil des Tutorials habe ich Ihnen den Zugang über die Developer Toolbar gezeigt.

Sie können aber auch einfach über den Application Builder eine Anwendung auswählen. Anschließend werden Ihnen alle Seiten der Anwendung aufgelistet.

Abbildung 22: Application Builder

Von dieser Seitenübersicht können Sie vorhandene Seiten einfach durch anklicken des jeweiligen Links auswählen und im Page Designer öffnen.

Abbildung 23: Page Designer

Neue Seiten mit dem Page Designer erstellen

Ausgehend von der Seitenübersicht (Abbildung 22) können Sie Ihrer Anwendung eine neue Seite über den Button “Create Page >” hinzufügen.

Befinden Sie sich bereits im Page Designer so finden Sie den Einstieg in den Seitenerstellungsassistenten in der Toolbar hinter dem +.

Abbildung 24: Create Page

Im ersten Dialog geben Sie an, welche Art von Seite sie erstellen möchten. Wählen Sie für dieses Beispiel die Seitenart “Form”.

Abbildung 25: Report with Form on Table

Auch bei den Forms gibt es wieder verschiedene Seitenarten. Eine häufig genutzte und wie ich finde vielseitig einsetzbare Variante Daten einer Tabelle zu bearbeiten, besteht aus einer tabellarischen Übersicht des Tabelleninhaltes. Von so einer Übersichtsseite aus können Sie einen Datensatz in einer zweiten Seite für die Bearbeitung öffnen.

Um soche Seiten von APEX erzeugen zu lassen nutzen Sie an dieser Stelle des Wizzards den Eintrag “Report with Form on Table”.

Klicken Sie auf Next >.

Abbildung 26: Definition des Interactive Reports

Nun geht es an die Definition der Report Page. In diesem Beispiel nutzen Sie den sogenannten Interactive Reports. Hinter einem Interactive Report verbirgt sich eine tabellarische Darstellung des Inhaltes einer (oder mehrerer) Datenbanktabelle.

Wählen Sie noch die Titel der Report Page und der Form Page fest. Mit Next > geht es weiter.

Abbildung 27: Navigation Menu

Beim erstellen der Anwendung im Teil 3 des Tutorials, haben Sie bereits sehne können , dass Ihre Anwendung ein Seiten-Menü besitzt. Um diesem Menü einen Link hinzuzufügen, über den die Übersichtsseite die Sie gerade erzeugen, aufzurufen geht es bei dieser Seite des Page-Wizzards.

Lassen Sie APEX einen neuen Menüeintrag über die Option “Create a new navigation menu entry” für Sie erzeugen. Jetzt benennen Sie diesen Menüpunkt noch und klicken Sie dann auf Next >.

Abbildung 28: Select a table

Als Basis für den Inhalt des Interactive Reports und der Form Page geht es im Schritt 5. An dieser Stelle selektieren Sie die Datenbanktabelle CO_COOKING_RECIPE. Jetzt werden Ihnen die Spalten der Tabelle im linken Auswahlfeld des Shuttle-Items aufgelistet. Meine Empfehlung ist es hier nach Möglichkeit alle Spalten zu übernehmen. Es ist später weniger aufwändig, überflüssige Spalten auszublenden bzw. zu entfernen als Neue einzufügen.

Mit Next> geht es zum nächsten Schritt.

Abbildung 29: Primary Key

APEX bietet Ihnen verschiedene Möglichkeiten die einzelnen Zeilen in der Datenbanktabelle anzusprechen. Ich habe gute Erfahrungen damit gemacht einen künstlichen Schlüssel, der über eine Datenbank-Sequence erzeugt wird, zu verwenden.Um so einen surrogate key zu nutzen, wählen Sie die Option “Select Primary Key Coulmn(s)” und dann im Feld “Primary Key Column 1” den Eintrag ID.

Den Inhalt der ID Spalte wird über den bereits angelegten Trigger in der Datenbank erzeugt.

Jetzt haben Sie es geschafft. Klicken Sie auf Create so erzeugt APEX zwei Seiten für Ihre Anwendung, die es in sich haben.

Abbildung 30: Report Form und Edit Form

Report- und Edit Form

Starten Sie jetzt einfach mal Ihre Anwendung über Run Application.

Über den Menüpunkt Cooking recipe können Sie die Report Form öffnen. Da die Datenbanktabelle noch keine Einträge enthält sieht die Seite noch etwas spartanisch aus.

Abbildung 31: Interactive Report Form

Legen Sie über den Create Button einen neuen Eintrag an. Dafür öffnet sich die zweite Seite – die Edit Form.

Abbildung 32: Edit Form

Der Page Wizzard hat diese Seite so erzeugt, dass Sie neue Datensätze erstellen, vorhandene bearbeiten oder löschen können. Die Seite ist von Haus aus responsiv und lässt sich auf einem Rechner genauso gut nutzen wie auf einem Smartphone oder Tablet.

Die Seite ist auch für den Mehrbenutzerbetrieb geeignet. Versuchen zwei User annähernd gleichzeitig den selben Datensatz zu editieren, wird dem zu letzt speichernden Anwender eine entsprechende Fehlermeldung ausgeben.

Tragen Sie doch zum Test einmal ein erstes “Rezept” in die Anwendung ein. APEX öffnet für die Datumsfelder einen Kalender-Picker. Die Memo (Clobs) Felder wurden als mehrzeilige Items erzeugt. Hier spielt APEX einfach seine Stärken aus. Durch die Nutzung der Metadaten aus der der Datenbank, werden bereits bei der Erzeugung von Elementen (Items, Regions,…) sinnvolle Typen gewählt.

Auch not null constraints finden Sie in Form von Eingangevalidierungen in der Seite wieder.

Speichern Sie die Daten, so gelangen Sie wieder in die Report Form.

Abbildung 33: Report Form

Diese Tabelle wirkt auf den ersten Blick etwas unscheinbar. Aber glauben Sie mir, ein Interactive Report bietet dem Anwender eine unglaubliche Zahl an Möglichkeiten.

Sie können Excel gleich auf die Spalten klicken und erhalten einen Autofilter. Die Suchleiste bietet Ihnen eine spaltenübergreifende Suche über die ganze Tabelle. Sie können Sortieren, nach Spalten gruppieren. Die guppierten Daten aggregieren.

Der Interactive Report bietet Ihnen neben der Pivotieriung der Daten auch die Möglichkeit sich diese als Chart anzeigen zu lassen. Über die Downloadfunktion können Sie die Daten “mitnehmen”. Oder lassen Sie sich die Daten per Mail zuschicken. Das geht übrigens auch mittels Subscription zeitgesteuert.

Oft genutze (Filter)einstellungen können Sie Speichern.

Um alle Möglichkeiten genau zu beschreiben, bedarf es einiger Seiten mehr. Die meisten Funktionen sind aber selbsterklärend.

Beitragsreihe

Oracle APEX 18.2 Tutorial Teil 3 – Application Builder

Anwendungen erstellen Sie in APEX mit dem Application Builder. Hierzu mehr im 3. Teil des deutschsprachigem APEX Einsteiger Tutorials.

Application Builder

Der Application Builder ist das Tool in APEX, mit dem Sie Anwendungen erstellen, bearbeiten und verwalten.

Abbildung 14: Application Builder
Abbildung 14: Application Builder

Öffnen Sie den App Builder über die gleich benannte Schaltfläche oder über den zugehörigen Menüpunkt, so erhalten Sie eine tabellarische Übersicht aller Anwendungen Ihres Workspaces. Diese werden in einem Interactive Report dargestellt. Dieses bietet Ihnen mannigfaltige Möglichkeiten, die Anwendungen zu filtern, gruppieren, sortieren, usw.

Abbildung 15: Anwendungsübersicht im Application Builder
Abbildung 15: Anwendungsübersicht im Application Builder

Anwendung erstellen

Neue Anwendundungen legen Sie über einen Wizzard an, den Sie über den Create Button – siehe Abbildung 15 – starten.

Im ersten Schritt werden Sie gefragt, welche Art von Anwendung Sie erstellen wollen. Wählen Sie New Application.

Abbildung 16: Create an Application
Abbildung 16: Create an Application

In der nächsten Seite (Abbildung 16) können Sie neben dem Namen der Anwendung auch diverse Eigenschaften festlegen.

Über den Button in der Select-List Appearance können Sie in einem Details-Dialog das Aussehen Ihrer Anwendung festlegen.

Abbildung 17: Appearance
Abbildung 17: Appearance

Wählen Sie neben einem Themen, ein Icon für diese Anwendung und im Navigation-Bereich Side Menü. Speichern Sie die Eingaben.

Sie gelangen wieder zurück zur Hauptseite des Application Wizzards. Wie Sie in Abbildung 16 sehen, wurde bereits eine Home Seite der Anwendung hinzugefügt. Auf das Anlegen weiterer Seiten verzichten ich an dieser Stelle. Auch zusätzliche Features sind für dieses Tutorial nicht von Belang.

Klicken Sie auf Create Application.

Der Wizzard legt nun die Web-Anwendung an und öffnet diese im Application Builder.

Abbildung 18: Cooking with APEX
Abbildung 18: Cooking with APEX

Anwendung ausführen

Starten Sie die Applikation Cooking with APEX durch anklicken des Buttons Run Application.

Es öffnet sich nun in einem neuen Registers Ihres Browsers die App.

Abbildung 19: Sign In
Abbildung 19: Sign In

Anmelden können Sie sich mit Ihrem APEX-Account. Auf Ihrem Rechner wird dabei ein Cookie mit der SessionId erzeugt.

Die Anwendung startet mit der Home -Seite.

Abbildung 20: Cooking with APEX
Abbildung 20: Cooking with APEX

Im Kopfbereich finden Sie links neben dem Anwendungstitels einen Burger-Button über den Sie das Seiten Menü verkleinern können.

Diese Minimaldarstellung des Menüs erhalten Sie auch wenn Sie die Anwendung z.B. auf einem Smartphone öffnen. APEX-Anwendungen, die auf dem aktuellen Universal Theme beruhen, sind von Haus aus responsive. Sie passen Ihr Aussehen also der Device -Größe an.

Da Sie die Anwendung aus der APEX-Entwicklungsumgebung heraus aufgerufen haben, wird Ihnen im Fußbereich der Anwendung die sogenannte Developer Toolbar angezeigt. Diese bietet verschiedene Werkzeuge, die Sie bei der Anwendungsentwicklung unterstützen werden.

Klicken Sie dort bitte einmal auf den Button Edit Page 1. Es öffnet Sie in dem ursprünglichen Register Ihres Browsers indem Sie die APEX-Anwendung geöffnet hatten, der Page Designer.

Abbildung 21: APEX Page Designer
Abildung 21: APEX Page Designer

Dieser zeigt nun alle Bestandteile der eben geöffneten Seite 1 (Home). Hier definieren Sie den Inhalt der Seiten und legen das Verhalten Ihrer Anwendung fest.

Die Seite selbst, können Sie direkt über das Run-Icon der Toolbar – siehe Abbildung 21 – laden. Auf diese Weise können Sie sehr intuitiv zwischen Ihrer Anwendung und der Entwicklungsumgebung hin und her wechseln.

Beitragsreihe

Im Teil 4 wird es um das Erstellen  von Seiten mit dem Page Designer gehen.

 

 

Oracle APEX 18.2 Tutorial Teil 2 – SQL Commands

Im zweiten Teil des Einführungstutorials geht es um die Ausführung von DDL Anweisungen über das Modul SQL Commander. 

In diesem Teil des Tutorials soll der Rest des Datenmodells angelegt werden. Hierzu kommt zu Anschauungszwecken das Werkzeug SQL Commands zum Einsatz.

SQL Commands

Im ersten Teil der Beitragsreihe ging es darum eine Tabelle mit dem Objects Browser zu erzeugen. APEX bietet unter dem SQL-Workshop neben diesem Tool mit dem SQL Commands ein weiteres Werkzeug mit dem Sie direkt mit der Datenbank interagieren können.

Abbildung 9: SQL Commands
Abbildung 9: SQL Workshop – SQL Commands

Über das Tool SQL Commands ist es möglich einfach Freihand SQL Befehle und SQL-Scripte auszuführen.

Abbildung 10: SQL Commands
Abbildung 10: SQL Commands

Im oberen Textfeld können Sie SQL bzw. PL/SQL Befehle eingeben. Über den Button Run führen Sie diese aus.

Mit Find Tables können Sie sich die Tabellen Ihres Workspaces anzeigen lassen. Klicken Sie in der Übersicht von “Find Tables” auf den Tabellennamen wird Ihnen die Struktur der Tabelle präsentiert.

Abbildung 11: Find Tables
Abbildung 11: Find Tables

Die Skripte, die Sie mit SQL Commands erstellt haben, lassen sich in APEX über die Schaltfläche Save speichern. Laden können Sie diese dann über den Tab Saved SQL.

Tabellen und Trigger anlegen

Das folgende SQL-Skript (Listing 1) erzeugt für die noch fehlenden Tabellen ingredients, processing_steps und product_classification. Zu jeder Tabelle wird je ein Trigger angelegt, über den ein künstlicher Schlüssel als Primärschlüssel erzeugt wird.

Das Skript habe ich mit einem weiteren APEX-Tool namens Quick SQL erzeugt. Anschließend habe ich noch einige kleine manuellen Anpassungen vorgenommen. Wenn Sie sich näher mit der schnellen Erzeugung von Datenmodellen beschäftigen möchten, werden Sie doch einfach mal einen (lohnenswerten) Blick auf den Beitrag Oracle Apex – Quick SQL.

-- create tables
create table co_processing_step (
  id number not null constraint co_processing_step_id_pk primary key,
  name varchar2(255),
  description varchar2(4000),
  media_name varchar2(255),
  media_object blob,
  media_filename varchar2(255),
  media_mime_type varchar2(48),
  media_size number,
  media_content_type varchar2(4000),
  order_number number,
  created date not null,
  created_by varchar2(255) not null,
  updated date not null,
  updated_by varchar2(255) not null
)
;

create table co_ingredients (
  id number not null constraint co_ingredients_id_pk primary key,
  processing_step_id number
  constraint co_ingredient_processing_st_fk
  references co_processing_step on delete cascade,
  name varchar2(255),
  quantity number,
  quantity_unit varchar2(10),
  calories number,
  product_classification_id number,
  created date not null,
  created_by varchar2(255) not null,
  updated date not null,
  updated_by varchar2(255) not null
)
;

create table co_product_classification (
  id number not null constraint co_product_classif_id_pk primary key,
  name varchar2(255),
  description varchar2(4000),
  created date not null,
  created_by varchar2(255) not null,
  updated date not null,
  updated_by varchar2(255) not null
)
;

CREATE SEQUENCE co_processing_step_seq ORDER;

CREATE SEQUENCE co_ingredients_seq ORDER;

CREATE SEQUENCE product_classification_seq ORDER;

-- triggers
create or replace trigger co_processing_step_biu
   before insert or update
   on co_processing_step
   for each row
 begin
   if :new.id is null then
      select co_processing_step_seq.nextval into :new.id from dual;
   end if;
   if inserting then
     :new.created := sysdate;
     :new.created_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
   end if;
   :new.updated := sysdate;
   :new.updated_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
end co_processing_step_biu;
/

create or replace trigger co_ingredients_biu
   before insert or update
   on co_ingredients
   for each row
  begin
      if :new.id is null then
         select co_ingredients_seq.nextval into :new.id from dual;
      end if;
      if inserting then
        :new.created := sysdate;
        :new.created_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
      end if;
      :new.updated := sysdate;
      :new.updated_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
end co_ingredients_biu;
/

create or replace trigger co_product_classification_biu
   before insert or update
   on co_product_classification
   for each row
  begin
    if :new.id is null then
        select product_classification_seq.nextval into :new.id from dual;
    end if;
    if inserting then
      :new.created := sysdate;
      :new.created_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
    end if;
    :new.updated := sysdate;
    :new.updated_by := nvl(sys_context('APEX$SESSION','APP_USER'),user);
end co_product_classification_biu;
/

-- indexes
create index co_ingredients_i1 on co_ingredients (processing_step_id);
create index co_product_classification_i1 on co_product_classification (ingredient_id);

Listing 1: Create ingredients , processing_steps, …

Kopieren Sie den Inhalt des Skriptes in den Eingabebereich des SQL Commands und klicken Sie dann auf Run.

Abbildung 12: Skript ausführen
Abbildung 12: Skript ausführen

Sie bekommen anschließend eine Zusammenfassung und mögliche Fehlermeldungen angezeigt.

Select-Statements ausführen

Über das Tool SQL Commands lassen sich aber auch Select-Anweisungen entwickeln und ausführen.

Um zu prüfen, welche Tabellen in Ihrem Schema vorhanden sind, können Sie beispielsweise dieses Select-Staement bemühen.


select *
  from user_tables
 where table_name like 'CO%'

Führen Sie es einfach in SQL Commands aus. Das Ergebnis wird Ihnen als Tabelle angezeigt.

Abbildung 13: Select Statement in SQL Commands
Abbildung 13: Select Statement in SQL Commands

Beitragsreihe

Oracle APEX 18.2 Tutorial Teil 1 – SQL Workshop

Deutschsprachiges Einsteiger Tutorial für Oracle APEX 18.2. Tabellen mit dem SQL Workshop erstellen.

In dieser Beitragsreihe möchte ich Ihnen anhand einer einfachen Anwendung zur Verwaltung von Kochrezepten eine Einführung in die Anwendungsentwicklung mit der Low-Code Entwicklungsumgebung Oracle Application Express bieten. Um dieses Tutorial nachstellen zu können, benötigen Sie eine lauffähige Apex Installation. Wie Sie APEX einrichten habe ich in dem Beitrag Installation Oracle Apex dieses Blogs beschrieben. Alternativ können Sie sich unter https://apex.orale.com einen Testzugang anlegen und die von Oracle in der Cloud betriebenen APEX-Plattform zu Bildungszwecken nutzen.

Aufgabenstellung

Als Beispiel soll eine einfache Anwendung erstellt werden, mit der Kochrezepte verwaltet werden können. Ein Rezept kann dabei mehrere Zutaten besitzen. Die Verarbeitung der Zutaten soll in einfachen Arbeitsschritten dargestellt werden.

Datenmodell

  • Kochrezepte (cooking_recipe)
    • name
    • description
    • number_of_persons
  • Zutaten (ingredients)
    • name
    • quantity
    • unit
    • product_classification ( bio, vegetarian, vegan, …)
    • calories
  • processing_step
    • name
    • description
    • Pictures/Videos
    • product_id
    • order_number

APEX-Anwendung

Haben Sie sich für eine eigene APEX Installation entschieden, müssen Sie als Erstes als Instanzadministrator einen sogenannten WORKSPACE und eine  Workspace-Developer anlegen. (siehe dazu auch Installation Oracle Apex )

Bei der Nutzung des Server von Oracle apex.oracle.com erfolgt dieser Schritt im Rahmen der Erstanmeldung.

Je nach Variante gibt es verschiedene URLs über die Sie die APEX-Entwicklungsumgebung starten. Sie sollten bei allen Varianten zu der in Abbildung 1 dargestellten Login-Seite gelangen.

Abbildung 1: Anmeldung als APEX-Developer
Abbildung 1: Anmeldung als APEX-Developer

Hier melden Sie sich an Ihrem WORKSPACE an.

Anschließend gelangen Sie zur Startseite der APEX-Entwicklungsumgebung.

Abbildung 2: APEX-Entwicklungsumgebung
Abbildung 2: APEX-Entwicklungsumgebung

Dort können Sie die einzelnen Module von APEX starten. Für den Anfang sind für Sie der APPLICATION BUILDER und der SQL-WORKSHOP von Bedeutung.

Über den SQL-WORKSHOP können Sie mit Hilfe verschiedener Werkzeuge in Ihrem Datenbankschema Objekte wie z.B. Tabellen, Views,… und Daten bearbeiten.

Mit dem APPLICATION BUILDER erstellen Sie die APEX-Anwendungen.

Bei der Entwicklung einer APEX Anwendung werden Sie durch unterschiedliche Wizzards unterstützt. Alle diese Assistenten nutzen massiv die Metadaten Ihrer Oracle Datenbank. Die Metadaten der Datenbankobjekte fungieren quasi als Modell ( im Sinne eines MDA-Ansatzes ) für die Erstellung der Anwendung. Aus diesem Grund, ist es ratsam immer zuerst die zugrunde liegenden Datenbankobjekte anzulegen.

SQL-Workshop

Der SQL-Worshop bietet diverse Werkzeuge zum Bearbeiten von Datenbankobjekten.

Abbildung 3: SQL-WORSHOP
Abbildung 3: SQL-WORKSHOP

Der OBJECT BROWSER zeigt Ihnen alle Datenbankobjekte der Schematas, die dem Apex Workspace zugeordnet sind. Diese können mit diesem Tool bearbeitet werden.

Mit dem Werkzeug SQL COMMANDS können Sie direkt SQL-Befehle ausführen.

Hinter dem Bereich SQL SCRIPTS verbirgt sich ein Verwaltungswerkzeug zum Speichern und Ausführen ganzer SQL Skripte.

Der UTILITIES-Bereich fasst nützliche Datenbankwerkzeuge zusammen.

Das sehr mächtige Modul RESTFUL SERVICES ermöglicht es Ihnen Restfull Web Services auf Basis von SQL und Pl/SQL Anweisungen zu definieren.

Tabelle mit dem OBJECT BROWSER erstellen

Wie bereits erwähnt, sollten Sie mit dem Datenmodell beginnen. Anhand der Tabelle cooking_recipe möchte ich Ihnen das Erstellen einer Tabelle mit dem OBJECT BROWSER zeigen.

Starten Sie als erstes den OBJECT BROWSER.

Abbildung 4: Object Browser
Abbildung 4: Object Browser

Auf der linken Seite können Sie mittels verschiedener Filter unterschiedliche Datenbankobjekte anzeigen lassen. Diese lassen sich selektieren und dann über entsprechende Eingabemöglichkeiten bearbeiten.

Um eine neue Tabelle anzulegen, klicken Sie im rechten Bereich auf + und dann auf Tabelle.

Abbildung 5: Tabelle definieren
Abbildung 5: Tabelle definieren

Legen Sie hier die Spalten der Tabelle fest.

Mit Next > geht es weiter.

Abbildung 6: Sequence und Trigger erzeugen
Abbildung 6: Sequence und Trigger erzeugen

Im nächsten Schritt des Wizzards können Sie definieren, wie der Primärschlüssel der Tabelle erzeugt werden soll. Wie Abbildung 6 zeigt, können Sie durch APEX eine Sequence anlegen lassen.

Klicken Sie auf Next > .

Im nächsten Schritt können Sie Foreign Key Constraints anlegen. In diesem Beispiel überspringen Sie den Punkt mit Next > .

Jetzt folgt eine Seite, über die Sie weitere Constraints für Ihre Tabelle ergänzen können. Auch darauf können Sie hier verzichten. Weiter mit Next > .

Abbildung 7: Create Table
Abbildung 7: Create Table

Abschließend bietet der Assistent Ihnen die Funktion sich das SQL Skript anzusehen.


CREATE table "CO_COOKING_RECIPE" (
   "ID" NUMBER,
   "NAME" VARCHAR2(50),
   "DESCRIPTION" VARCHAR2(2000),
   "NUMBER_OF_PERSONS" NUMBER,
   "CREATED_BY" VARCHAR2(50),
   "CREATED" DATE,
   "CHANGED_BY" VARCHAR2(50),
   "CHANGED" DATE,
  constraint "CO_COOKING_RECIPE_PK" primary key ("ID")
)
/

CREATE sequence "CO_COOKING_RECIPE_SEQ"
/

CREATE trigger "BI_CO_COOKING_RECIPE"
  before insert on "CO_COOKING_RECIPE"
  for each row
 begin
   if :NEW."ID" is null then
     select "CO_COOKING_RECIPE_SEQ".nextval into :NEW."ID" from sys.dual;
   end if;
end;
/

Lassen Sie die Tabelle über Create Table anlegen.

Abbildung 8: Tabelle im Objekt Browser
Abbildung 8: Tabelle im Object Browser

Sie landen nun wieder im Object Browser. Dort können Sie weitere Strukturanpassungen an der Tabelle vornehmen. Für dieses Beispiel ist das aber nicht notwendig.

Die anderen Tabellen werden in den folgenden Beiträgen angelegt, um andere Werkzeuge und Aspekte der Anwendungsentwicklung mit APEX zu verdeutlichen.

Beitragsreihe

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DSGVO (GDPR) und Oracle Application Express (APEX)

Mal Hand aufs Herz. Haben Sie sich bei der Nutzung von APEX schon einmal mit dem Datenschutz und seit dem 25. Mai 2018 im Speziellen mit der DSGVO ( GDPR ) auseinander gesetzt?

Vielleicht fragen Sie sich wo Sie mit der DSGVO als APEX Entwickler in Berührung kommen?  Durch die Verwendung von APEX-Anwendungen fallen durch die Auditierung personenbezogene Daten an. Dazu kommen noch die personenbezogenen Daten Ihres Programms. Betreiben Sie APEX-Anwendungen auf die Ihre Kunden z.B. über das Internet zugreifen können, schlägt die DSGVO mit voller Härte zu. Aber auch für interne Anwendungen können Sie den Datenschutz nicht außer Acht lassen. Für solche Anwendungen benötigen Sie eine DSGVO (GDPR) konforme Datenschutzerklärung, die von jeder Seite der Anwendung aus zugänglich sein sollte. Mit dem Provider bzw. Cloud Anbieter, der die APEX- bzw. Datenbankinstanz für Sie betreibt, sollten Sie einen entsprechenden Auftragsdatenverarbeitungsvertrag abschließen. Noch komplexer wird das Ganze, wenn das Unternehmen, welches für Sie die Server betreibt, seinen Sitz außerhalb der EU hat. Denken Sie aber auch an Ihre Beispielanwendungen, die Sie über apex.oracle.com öffentlich betreiben. Oft haben diese Beispielapplikationen einen komerziellen Charakter. Auch hier fallen personenbezogene Daten wie z.B. die dynamische IP-Adresse des Clients an.

Die Betrachtungen in diesem Beitrag sind sicher nicht vollständig , stellen auch keine Rechtsberatung dar und sollen als Anregung zur näheren Betrachtung verstanden werden.

Grundsätze

Nach Art 4 DSGVO sind

„personenbezogene Daten“ alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, […]

Dazu gehören offensichtlich der Name, Anschrift, Login-Daten, EMail-Adresse, Personaldaten aber auch beispielsweise die IP-Adresse und noch vieles mehr.

Verarbeitung und Speicherung personenbezogener Daten

Um der DSGVO gerecht werden zu können, sollten Sie sich im Ersten Schritt darüber bewusst werden, welche personenbezogenen Daten in APEX vorhanden sind. Nach Art. 30 DSGVO sind Sie sowieso verpflichtet ein Verzeichnis von Verarbeitungstätigkeiten aller personenbezogener Daten zu führen. Dieses muss unter anderem den Zweck, Löschfristen und den Rechtsgrund der Verarbeitung beinhalten.

Darüber hinaus sollten Sie sich dem Grundsatz der Datenvermeidung (Art. 5 c DSGVO) nach Gedanken darüber machen, welche personenbezogene Daten Sie wirklich benötigen und APEX datenschutzfreundlich konfigurieren.

Des Weiteren gilt nach Art. 5 a) und b) DSGVO

Personenbezogene Daten müssen

1 auf rechtmäßige Weise, nach Treu und Glauben und in einer für die betroffene Person nachvollziehbaren Weise verarbeitet werden („Rechtmäßigkeit, Verarbeitung nach Treu und Glauben, Transparenz“);

2 für festgelegte, eindeutige und legitime Zwecke erhoben werden und dürfen nicht in einer mit diesen Zwecken nicht zu vereinbarenden Weise weiterverarbeitet werden; eine Weiterverarbeitung für im öffentlichen Interesse liegende Archivzwecke, für wissenschaftliche oder historische Forschungszwecke oder für statistische Zwecke gilt gemäß Artikel 89 Absatz 1 nicht als unvereinbar mit den ursprünglichen Zwecken („Zweckbindung“);

Das bedeutet für Sie, dass Sie die Rechtmäßigkeit der Verarbeitung sicherstellen müssen. Nach Erwägungsgrund 40 bedeutet das, dass Sie den Anwender vor der Verarbeitung um Erlaubnis bitten müssen oder es einen anderen Rechtsgrund gibt auf dessen Basis die Verarbeitung legitim ist. So können Sie beispielweise Ihrer Anwendung eine entsprechende Abfrage voranstellen und den User um seine Erlaubnis bitten. Dabei sollten Sie aber auch nachträglich in der Lage sein die Abgabe dieser Willenserklärung nachweisen zu können. Dazu protokollieren Sie diese einfach in einer Datenbanktabelle.

Die Verarbeitung muss transparent geschehen. Also sollten Sie auch eine entsprechende Datenschutzerklärung in zugänglicher Form Ihrer Anwendung hinzufügen.

Im Folgenden habe ich Ihnen einige Stellen aufgelistet an denen personenbezogene Daten in APEX anfallen. Die Beurteilung der Handhabung, Notwendigkeit und Zweckbindung  der Speicherung dieser Daten überlasse ich Ihnen.

User Access Log

Hier werden die gültigen und ungültigen Abmeldungen an Ihren Anwendungen protokolliert. Neben den Zeitstempeln und Benutzernamen finden Sie auch hier die Client IP-Adresse.


select * from apex_180100.wwv_flow_user_access_log

APEX-Activity Log

Haben Sie das Logging Ihrer Abwendungen aktiviert, werden alle Seitenzugriffe inkl. User ID und Client-IP-Adresse im Activity Log protokolliert. Das Logging können Sie als APEX-Developer in den Anwendungseigenschaften Ein- bzw. Ausschalten.

Abbildung 1: Logging ausschalten

Das setzt allerdings voraus, dass der Instanzadministrator das “Application Activity Logging” im internal Workspace auf “User Application Setting” gesetzt hat . Ansonsten obliegt es Ihm, das Logging zu aktivieren bzw. zu deaktivieren.

Das Activity Log wird wechselseitig in zwei Tabellen gespeichert


select * from apex_180100.wwv_flow_activity_log1$

select * from apex_180100.wwv_flow_activity_log2$

Developer Aktivitäten

Neben den Anwendern Ihrer Anwendungen hinterlassen auch Sie als Entwickler Ihre Daten in APEX. An verschiedenen Stellen in der Benutzeroberfläche sehen Sie wer wann, welches Objekt geändert hat. Diese Daten werden hier gespeichert.


select * from apex_180100.wwv_flow_builder_audit_trail

Logs löschen

Sie sollten diese Audit-Daten auch in Ihrem Löschkonzept berücksichtigen. Manuell können Sie die Daten als Instanzadministrator  löschen.

Abbildung 2: Audit Logs verwalten

Änderungshistorie

Eine oft in Anwendungen eingesetzte Funktion ist das Protokollieren von Änderungen. Dabei werden neben den eigentlichen Daten in der Regel der Account des Bearbeiters und der Zeitstempel der Änderungen protokolliert. Das sind personenbezogene Daten.

Einen anderen Aspekt betrifft die Daten selbst. Enthalten diese auch personenbezogene Inhalte, so müssen Sie die Änderungshistorie in Ihre Überlegungen zu diesem Thema ebenfalls mit einbeziehen. Neben der Zweckbindung ist besonders ein entsprechendes Löschkonzept von Nöten, welches auch diese Datenhistorie beachtet.

Werkzeuge wie das APEX Tool QuickSql bieten die Möglichkeit bei der Erstellung eines Datenmodells die Auditierung der Änderungen direkt zu berücksichtigen. Quick SQL erzeugt dazu eine Log-Tabelle, in der per Trigger der Quelldaten protokolliert werden. Allerdings fällt der Datenschutz dabei hinten rüber und muss manuell nachgerüstet werden.

Eine andere Möglichkeit Änderungen in APEX-Anwendungen zu protokollieren bietet das PlugIn Audit. Auch hier müssen Sie die Datenschutzaspekte manuell nachrüsten.

Abhängige Datenbankobjekte

Neben den Audit-Daten bleibt Ihnen zu prüfen, welche personenbezogen Daten von Ihrer Anwendung verarbeitet werden und wie diese zu behandeln sind. In APEX können Sie über das Utility Database Object Dependencies ermitteln, welche Tabellen Ihrer Anwendung zugrunde liegen.

Abbildung 3: Abhängige Datenbankobjekte

Neben der manuellen Prüfung der Tabellen bietet Oracle das Oracle Database Security Assessment Tool. Mit diesem Werkzeug können Sie neben der Prüfung der Sicherheit einer Datenbank auch gezielt nach personenbezogenen Daten suchen. Einen ersten Einstieg finden Sie in diesem Blog-Beitrag.

Cookies

Ein weiterer Punkt, der für APEX -Anwendungen zu beachten ist, finden Sie im Erwägungsgrund 30 der DSGVO. Hier wird darauf hingewiesen, dass auch Cookies personenbezogene Daten beinhalten können.

Da APEX für das clientseitige Session-Management Cookies verwendet, müssen Sie auch hier für Transparenz sorgen.

Betroffenenrechte

Die DSGVO räumt den Betroffenen umfangreiche Rechte ein. An dieser Stelle möchte ich nur ein paar Überlegungen dazu anstellen.

Recht auf Datenlöschung (Art. 17 DSGVO)

Betroffene haben das Recht Ihre personenbezogenen Daten Löschen zu lassen, wenn keine anderen rechtlichen Pflichten (z.B. Aufbewahrungspflicht) dagegen stehen. Alleine dieses Thema ist mindestens eine Beitragsreihe wert. An dieser Stelle möchte ich nicht auf die Erstellung eines Löschkonzeptes eingehen.

Als APEX-Entwickler geht es vielmehr darum, so ein Löschkonzept umzusetzen. Technisch lässt sich die Löschung über entsprechende delete-Statements lösen. Diese können natürlich auch zeitgesteuert ausgeführt werden oder Sie stellen den Anwendern eine entsprechende Funktion in der Anwendung zur Verfügung. Dies hätte den Vorteil, dass Sie dort vorab noch eine Prüfung durchführen lassen können.

Recht auf Berichtigung (Art. 16 DSGVO)

Dieser Punkt kann meiner Meinung nach in der Regel manuell über die gewohnten Seiten einer APEX Anwendung erfolgen.

Auskunftsrecht (Art. 15 DSGVO)

Diese Aufgabe ist schon aufwändiger. Gerade wenn die personenbezogenen Daten über verschiedene Bereiche der Datenbank erstrecken und auch die Audit-Logs berücksichtigt werden müssen. Für solche Fälle bietet sich meiner Meinung nach ein Selfservice-Ansatz an. Tragen Sie die Daten in Form einer oder mehrer Abfragen zusammen und bieten Sie den Anwendern diese über eine personalisierte Seite ( … where userid = :APP_USER) an.

Anders verhält es sich, wenn Sie in der Anwendung Daten Dritter verwalten, die selber keinen Zugang zu dem Programm haben. Hier kommen Sie nicht darum herum, eine Exportfunktion – z.B. über die Boardmittel eines Interaktiven Reports – vorzusehen. Mit so einem Ansatz erledigen Sie auch gleich das Recht auf Datenübertragbarkeit (Art. 20 DSGVO).

Sicherheit nach Stand der Technik

Die DSGVO weist darauf hin, dass Systeme nach aktuellem Stand der Technik sicher auszulegen sind. Auch dieses Thema ist uumfänglich zu erörtern, würde aber eher ein Buch als eine  Blog-Beitrag füllen. Aber ich möchte noch kurz auf einige wenige Punkte eingehen.

Sie sollten bei Thema Sicherheit einen ganzheitlichen Ansatz verfolgen. Sorgen Sie dafür, dass der komplette APEX-Stack sicher ausgelegt wird. Das fängt bei der Hardware inkl. Betriebssystem an, geht über die Datenbank und dem Web-Server hin zu APEX. Einige wenige Anregungen zum Thema Sicherheit und der Oracle-Datenbank finden Sie hier in dem Beitrag Oracle Datenbank härten..

APEX selbst bringt bereits vieles mit, um sichere Anwendungen zu erstellen. Die Verzögerungen bei fehlerhaften Anmeldungen gegen BruteForce-Attacken, Hashing der URL gegen URL-Tampering, das Escapen von Inhalten gegen Cross-Site-Scripting, Verwendung von Parametern gegen SQL-Injection und vieles mehr.

Allerdings sollten Sie auch die Kommunikation zwischen Client und Server via SSL Verschlüsseln. Dies wird gerade für offen zugängliche Web-Anwendungen explizit von der DSGVO gefordert.