Arbeiten mit dem APEX Repository: Erstellen einer Seitenübersicht
Erscheinungsmonat |
APEX-Version |
Datenbankversion |
Juni 2011 |
ab 3.2 |
ab 9.2 |
Dass APEX ein metadatengetriebenes Werkzeug ist, alle Anwendungsdefinitionen
in den Tabellen des APEX Repository gespeichert werden und bei Bedarf in den
APEX Dictionary Views zur Verfügung stehen, ist nahezu jedem APEX-Entwickler
bestens bekannt. Und es gab in der Vergangenheit auch schon den einen oder
anderen Community-Tipp zum
Thema APEX-Repository. Heute wollen wir das APEX-Repository
von der praktischen Seite betrachten - und zwar in einem Anwendungsfall, der wohl
für jeden Entwickler interessant ist. Dieser Tipp zeigt, wie Sie mit dem
APEX-Repository eine automatisierte Seitenübersicht für Ihre Anwendung realisieren
können. Ausgangspunkt für die folgenden Ausführungen kann jede beliebige, also
auch eine bereits existierende Anwendung sein.
Zu Anfang steht jedoch etwas Fleißarbeit. Navigieren
Sie für jede Anwendungsseite zu den Seitenattributen und dort zu den Bereichen
Hilfetext und Kommentar. In diesem
Beispiel konzentrieren wir uns auf den Hilfetext. Wenn Sie möchten, können Sie auch mit den Kommentaren
arbeiten. Füllen Sie die für jede Seite aus - am besten macht man das bei der Entwicklung "nebenher".
Abbildung 1: Hilfetext und Kommentar für jede Seite hinterlegen
Seiten, die Sie nicht in die Seitenübersicht aufnehmen möchten (rein technische Seiten oder
Hilfsseiten für Sie als Entwickler), versehen Sie mit gar keinem oder einem Schlüsselwort
(bspw. NONE) als Hilfetext. Das werden wir später nutzen, um bestimmte Seiten aus der
Seitenübersicht auszublenden.
Abbildung 2: Hilfetext NONE für auszublendende Seiten
Wenn das gemacht ist, geht es an die Umsetzung der Seitenübersicht. Erstellen Sie dazu eine
neue Seite in Ihrer Anwendung. Die Seitenübersicht werden wir nun mit Hilfe der
APEX-Dictionary View APEX_APPLICATION_PAGES realisieren. Erzeugen Sie also einen
Bericht mit folgender SQL-Abfrage.
Das sieht dann auf den ersten Blick wie in Abbildung 3 aus.
Abbildung 3: Seiten-Hilfetexte - dargestellt in einem APEX-Bericht
Sie erkennen schon, worauf das hinausläuft, oder ...? Man kann jetzt schon
sehen, wie mächtig das APEX-Repository ist - die Informationen können beliebig genutzt
werden. Und auch wenn Abbildung 3 noch nicht so gut aussieht - wenn man diesen
Bericht noch ein wenig formatiert und anreichert, kann hier eine sehr ansehnliche
Übersicht über die Anwendungsfunktionalität herauskommen. Während ein klassischer
Bericht bei kleineren Anwendungen ausreichend sein dürfte, ist bei größeren Anwendungen
ein interaktiver Bericht hervorragend geeignet - bietet er dem Anwender doch eine bequeme
Suche quer durch die hinterlegten Hilfetexte.
Auf jeden Fall möchte man dem Endanwender die Möglichkeit bieten, sofort auf die
entsprechende Seite navigieren zu können - das wird nun mit APEX-Standardfunktionalität
gemacht - es wird einfach ein Spalten-Link eingerichtet. Abbildung 4 zeigt dies. Achten
Sie darauf, dass die Seiten-ID für das Link-Ziel nun auch aus den Berichtsdaten entnommen
wird (#PAGE_ID#).
Abbildung 4: Einrichten eines Links zur direkten Navigation zu einer Seite
Wenn man dann noch ein wenig formatiert, sieht die Übersicht wie in Abbildung 5
aus ...
Abbildung 5: Die formatierte Seitenübersicht
Bleibt noch eines: Wie viele Anwendungen hat auch die in diesem Beispiel ein
Rechtekonzept. Manche Seiten sind einer bestimmten Nutzergruppe vorbehalten;
bspw. Administratoren. Auch in einer Seitenübersicht möchte man dem Nutzer
natürlich nur die Seiten anzeigen, die dieser Nutzer auch wirklich sehen darf;
alle anderen sollen ausgeblendet werden.
Wie in APEX üblich, wurden auch hier Autorisierungsschemas zur Zugriffsteuerung
genutzt - das ist auch in der View APEX_APPLICATION_PAGES sichtbar. Abbildung 6 zeigt
die Berichtsabfrage unserer Seitenübersicht nochmals im SQL-Workshop - und zwar
erweitert und die Spalte AUTHORIZATION_SCHEME .
Abbildung 6: Informationen über Autorisierungsschema in APEX_APPLICATION_PAGES
Mit der Funktion PUBLIC_CHECK_AUTHORIZATION im Paket APEX_UTIL kann man als Entwickler
selbst prüfen, ob der gerade angemeldete Nutzer das Schema erfüllt oder nicht.
Leider liefert die Funktion ein Boolean, also true oder false zurück, kann also
in einer SQL-Abfrage nicht ohne weiteres genutzt werden. Also brauchen wir eine
eigene Funktion, die den Check durchführt und bei Erfolg eine "1" und bei Nichterfolg
eine "0" zurückgibt. Legen Sie diese mit dem
SQL Workshop wie folgt an.
Bauen Sie die Prüfung des Autorisierungsschemas dann wie folgt in die SQL-Abfrage
des Berichts ein.
Ein Anwender, der nicht Administrator ist, sieht dann ab sofort eine andere
Übersicht (Abbildung 7).
Abbildung 7: Seitenübersicht als "Nicht-Administrator"
Damit haben Sie Ihrer Anwendung eine einfache Seitenübersicht und damit auch
ein Stück Dokumentation für den Endanwender hinzugefügt. Das praktische an der
Sache ist, dass diese Übersicht ganz automatisch aktuell bleibt - denn sie
ist keine "geschriebene" Webseite, sondern ein SQL-Bericht auf das APEX-Repository. Jede
neue Seite in der Anwendung wird direkt in der Übersicht sichtbar werden. Durch die
automatische Berücksichtigung des Autorisierungsschemas ist auch automatisch sichergestellt,
dass jeder Endbenutzer nur die Seiten sehen kann, auf die er auch tatsächlich Zugriff hat.
Und natürlich ist diese Vorgehensweise nicht auf APEX-Seiten beschränkt: Die Metadaten
alle Komponenten einer APEX-Anwendung sind im APEX-Repository enthalten und damit über
die Dictionary Views einsehbar. Sollen die auf den Seiten enthaltenenen Regionen in
die Übersicht aufgenommen werden, so finden sich alle nötigen Informationen in
APEX_APPLICATION_PAGE_REGIONS - die Elemente sind in APEX_APPLICATION_PAGE_ITEMS. APEX
stellt insgesamt 99 Dictionary Views bereit - das ganze Repository lässt sich damit
einsehen und in Anwendungen intelligent nutzen.
Zurück zur Community-Seite
|