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. 

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.