Oracle Application Express (APEX) drucken

Einfache Möglichkeiten in Oracle Application Express (APEX) Seiten zu drucken

Eine immer wiederkehrende Aufgabe bei der Erstellung einer APEX Anwendung ist es, die Seiten in ein für den Ausdruck optimiertes Erscheinungsbild zu bringen. Sicherlich gibt es für diese Aufgabe verschiedene Möglichkeiten. Ich möchte in diesem Beitrag eine einfache Möglichkeiten zeigen, wie diese Aufgabe für viele Anwendungsfälle erledigt werden kann.

Der beschriebene Möglichkeit liegt eine einfache Idee zu Grunde. Wenn eine Seite gedruckt werden soll, werden alle störenden Elemente wie das Navigation Menü, die Kopf- und Fußzeile und die Schaltflächen ausgeblendet.

Abbildung 01: Störende Elemente

Dynamic Action

In APEX lassen sich Komponenten einfach ausblenden. Sie können das z.B. über eine Condition erledigen. Eine andere Variante möchte ich Ihnen jetzt vorstellen. Sie können für diese Aufgabe eine Dynamic Action nutzen.

Abbildung 02: Print-Button

Hierzu wird zuerst ein Button in der Seite benötigt. Wenn Sie diesen hinzugefügt habe, klicken Sie mit der rechten Maustaste im Application Builder auf den Eintrag des Buttons in der Seitenstruktur und legen für die Schaltfläche eine neue Dynamic Action an.

Abbildung 03: Neue Dynamic Action

Eine Dynamic Action wird auf Client-Seite im Browser ausgeführt. Hinter ihr verbergen sich JavaScript-Events. In diesem Fall nutzen Sie das OnClick-Event. Das jeweilige Ereignis finden Sie in der Wenn (When) – Sektion. (Ich hatte (leider) bei der Erstellung des Screen-Shots die Entwicklungsumgebung auf Deutsch eingestellt. ) 

Jede Dynamic Action bringt einen True- und einen False-Zweig mit. Sie können also noch eine Bedingung (Condition) hinterlegen, über die Sie steuern können, wann welcher dieser Zweige ausgeführt werden soll. In diesem Fall bedarf es keiner weiteren Einschränkungen. Im True – Zweig werden nun drei Einträge vom Typ JavaScript Expression (JavaScript-Code Ausführen) angelegt.

Abbildung 04: True-Zweig

In dem Ersten Abschnitt tragen Sie nun diesen Quellcode ein.

if ($("body").hasClass("js-navExpanded")) {
     $("#t_Button_navControl").click();
};

setTimeout(3000);

$("#t_Header").hide();
$("#t_Body_nav").hide();
$("#t_Body_title").hide();
$("#t_Body_content_offset").hide();
$(".t-Button").hide();
$(".t-Footer").hide();

Dieser Code ist recht einfach. Zuerst wird das Menü eingeklappt . Nach einer kurzen Pause, werden der Header, die NavBar, der BodyTitle, alle Schaltflächen und auch der Footer ausgeblendet. 

Mit window.print(); wird nun im nächsten Java-Schnipsel der Druck-Dialog des Browsers geöffnet.

Der letzte JavaScript-Teil blendet nach dem Drucken wieder alle versteckten Seitenbestandteile ein.

$("#t_Header").show();
$("#t_Body_nav").show();
$("#t_Body_title").show();
$("#t_Body_content_offset").show();
$(".t-Button").show();
$(".t-Footer").show();


$("#t_Button_navControl").click();

Die Aufteilung in drei eigenständige JavaScript Blöcke sorgt dafür, dass diese synchron – also nacheinander – ausgeführt werden und auf den vorherigen Block warten.

Sie sollten darauf achten, dass Sie die Eigenschaft “Execute On Page Load” der JavaScript-Sektionen auf false setzen.

Abbildung 05: Nicht beim Laden der Seite ausführen.

Die Druckvoransicht können Sie sich in Abbildung 06 exemplarisch für die “Sample Database Application” ansehen.

Abbildung 06: Druckvoransicht

Sicherlich genügt diese Lösung nicht allen Anforderungen. Sie bietet aber eine einfache und schnell zu realisierende Möglichkeit, eine Seite für den Ausdruck zu optimieren.

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 – Quick SQL

Low Code Entwicklung von Datenmodellen mit Quick SQL, einer APEX Packaged Application.

Oracle bietet im Rahmen seiner Entwicklungsumgebung APEX sogenannte Packaged Applications. Bei diesen Anwendungen handelt es sich zum Einen um Bespielanwendungen zum Anderen aber auch um produktiv nutzbare Systeme.

Eine dieser Anwendungen ist Quick SQL.

Quick SQL einrichten

Die Installation von Quick SQL geht zügig von der Hand. In APEX angemeldet, klicken Sie auf den Menüpunkt Packed Application.

APEX Packaged Application (Mitgelieferte Anwendungen)

Nun können Sie in der sich öffnenden Übersicht die Packaged Application Quick SQL auswählen.

Quick SQL auswählen

Neben einer Kurzbeschreibung finden Sie auf der sich öffnenden Seite die Schaltfläche Installieren. Folgen Sie dem Installationsassistenten. Fertig.

Starten Sie die Anwendung das erste mal, können Sie sich mit dem bei der Installation gewählten Authentifizierungsverfahren an Quick SQL anmelden. Bei dem ersten Start, müssen Sie noch einige Parameter prüfen und bei Bedarf anpassen. Das stellt sich wie in folgender Abbildung  dar.

QuickSQL einrichten

Datenmodell mit Quick SQL entwerfen

Quick SQL gliedert sich in  zwei Bereiche. Links können Sie sehr kompakt Tabellen und ihre Relationen zueinander definieren.

Rechts wird bei jeder Änderung das zugehörige DDL (Data Definition Language) Skript erzeugt.

Benutzeroberfläche QuickSQL

Als einfaches Beispiel soll ein Datenmodell für ein Projektplanungstool dienen.

Tabellen werden einfach durch die Eingabe des Tabellennamens deklariert. Die zugehörigen Spalten rücken Sie einfach in den folgenden Zeilen ein.

Datenmodell Projektplanung

Quick SQL Eigenschaften

Schauen Sie sich das erzeugte DDL-Script näher an, so sehen Sie, dass eine ID-Spalte als künstlicher Schlüssel erzeugt wurde.  Diese Spalte wird über einen Trigger gefüllt. Auch gibt es mehrere Spalten, in denen Audit-Informationen gespeichert werden. Diese Spalten können beim Einsatz der Tabelle in einer APEX-Anwendung sogar mit den APEX-Account über einen Trigger belegt werden. Dies sind nur zwei Beispiele, die Ihnen Quick SQL bietet. Festlegen können Sie die Generierung dieser Funktionen in den Eigenschaften von Quick SQL.

Quick SQL Eigenschaften

Die Abbildung zeigt nur einen Teil der Möglichkeiten. So können Sie z.B. allen Tabellen einen Präfix voran stellen, Änderungen automatisch über einen Trigger in einer Audit-Tabelle protokollieren und noch vieles mehr erledigen lassen. Nehmen Sie sich Zeit, um diese Möglichkeiten in Gänze kennen zu lernen.

Relationen

Jedem Projekt sollen in dem gezeigten Beispiel n ToDos zugeordnet werden können. Also eine einfache 1:n Beziehung.

Um diese abhängige Tabelle zu erzeugen, geben Sie auf der Ebene der Spalten zunächst ToDos als neuen Tabellennamen ein. In den nächsten Zeilen rücken Sie die Spaltenbezeichner um eine weitere Ebene tiefer ein. Quick SQL erweitert das DDL-Script um die Tabelle ToDos und fügt eine Fremdschlüsselspalte project_id ein.  Neben der Spalte wird auch sofort ein foreign key constraint erzeugt.

Relationen erzeugen

Syntax and Examples

Nähere Informationen über die sehr umfangreichen Möglichkeiten von Quick SQL verbergen sich hinter dem Link Syntax and Examples in der Anwendung.

Fazit

Quick SQL bietet als Low Code Entwicklungstool durch die Nutzung von Konventionen eine enorme Geschwindigkeit bei der Erstellung eines Datenmodells. Auch für nicht APEX-Entwickler verdient diese Anwendung eine genauere Betrachtung.