APEX-Komponenten im Griff: Master-Anwendungen und Subscriptions
Auch in APEX-Anwendungen gibt es Komponenten, die immer wieder verwendet
werden. Das ist auch erstmal unproblematisch - ist eine Werteliste doch
recht schnell erstellt. Problematisch wird es, wenn sich an dieser Werteliste
etwas ändern soll - und wenn diese (zentral gemachte) Änderung auf alle Applikationen durchschlagen
soll. Muss man sich nun wirklich durch alle Anwendungen durcharbeiten und alle
Wertelisten händisch anpassen?
Nein, muss man nicht. Wenn man vorher dran gedacht hat, den in APEX eingebauten
Subscription-Mechanismus zu verwenden.
Dieses etwas im Schatten stehende Feature
wird in diesem Community-Tipp behandelt.
Zur Nutzung der Subscriptions empfiehlt sich das Erstellen einer "Master-Applikation",
in der alle Vorlagen für Wertelisten, Templates, Plugins und andere enthalten sind.
Nehmen Sie für diese Master-Anwendung auch nicht irgendeine Applikations-ID, sondern
eine bestimmte, sagen wir: 99999999.
Abbildung 1: Die Master-Anwendung 99999999 wurde erstellt
Navigieren Sie nun dort zu den Gemeinsamen Komponenten und erstellen Sie alle
Komponenten, die von globaler Bedeutung sind. In Frage kommen ...
- Templates
- Wertelisten (Lists Of Values)
- Autorisierungsschemas
- Authentifizierungsschemas
- APEX 4.0 Plugins
- Navigationsleisteneinträge
- Shortcuts
Erstellen Sie also in der Masterapplikation eine neue Werteliste
namens LOV_EMP mit einer SELECT-Abfrage auf die Tabelle EMP. Abbildung 2
zeigt diese gemeinsam mit zwei anderen Wertelisten. Auch immer wieder
verwendete statische Wertelisten können hier hinterlegt werden. Typische
Beispiele sind Ja/Nein, Herr/Frau und andere.
Abbildung 2: Die Wertelisten wurden in der Masteranwendung erstellt
Neben den gemeinsamen Komponenten können natürlich auch die Seiten der
Master-Anwendung genutzt werden. Hier empfiehlt es sich, Anwendungskomponenten
als Anschauungsmaterial zu hinterlegen. Auch Berichte auf globale Tabellen
lassen sich hier hinterlegen. Die Master-Applikation kann so zum Anlaufpunkt
für jeden APEX-Entwickler werden - dort kann er sich entweder einfach nur
informieren oder die Komponenten, wie im folgenden gezeigt, per Subscription
in seine Anwendung einbinden. Letzteres erlaubt dem Eigentümer der Master-Anwendung
darüber hinaus, Änderungen per Klick an alle Anwendungen, die "subscribed" sind,
zu verteilen.
Wechseln Sie nun in die Rolle des Entwicklers einer neuen Applikation. Erstellen
Sie also eine neue Applikation und eine Seite in derselben. Nun möchten Sie
darin ein Formularelement als Auswahlliste erzeugen - allerdings soll nun die
Vorlage aus der Master-Applikation verwendet werden.
Navigieren Sie auch in der neuen Applikation zu den Gemeinsamen Komponenten
und dort zu den Wertelisten. Auch wenn die Applikation noch völlig neu ist: Erstellen
Sie die Werteliste als Kopie einer vorhandenen Werteliste.
Abbildung 3: Neue Werteliste als Kopie einer Vorhandenen erstellen
Wählen Sie dann die Anwendung aus, aus der die Kopie gemacht werden soll;
nehmen Sie hier die Master-Applikation. Hier können Sie alle Applikationen
Ihres Workspace auswählen - die Master-Applikation muss sich also im Workspace
befinden. Wenn Sie eine Master-Applikation für mehrere Workspaces bereitstellen
möchten, muss jeder Workspace-Administrator diese zunächst herunterladen und importieren.
Abbildung 4: Die Vorlage für die Werteliste befindet sich in der Master-Applikation
Nun werden Ihnen alle in der Master-Applikation vorhandenen Wertelisten gezeigt;
Sie können dann auswählen, welche Sie in Ihre Anwendung übernehmen möchten. Wichtig
ist, dass Sie rechts Kopieren und Abonnieren bzw. Copy and Subscribe auswählen. Die Abonnements
werden jedoch nicht in der Master-Applikation, sondern in der eigentlichen Applikation (Child) gespeichert.
Dadurch ist es möglich, die Master-Applikation (bspw. bei einer neuen Version) zu löschen
und neu zu importieren. Wichtig ist nur, dass die Applikations-ID der Master-Applikation
sich nicht mehr ändert.
Abbildung 5: Die Anwendung abonniert alle Wertelisten aus der Master-Applikation
Navigieren Sie anschließend zu Ihrer Anwendungsseite und verwenden Sie
die Wertelisten in Formularelementen. Ein Ergebnis könnte wie in Abbildung 6
aussehen ...
Abbildung 6: APEX-Anwendungsseite mit den Wertelisten
Auch in anderen Anwendungen können Sie die Wertelisten nun verwenden. Wichtig
ist nur, dass Sie beim Kopieren stets an das Copy and Subscribe denken. Denn nur
auf diese Art und Weise kopierte Wertelisten können aus der Master-Applikation heraus
aktualisiert werden. Und das soll nun geschehen.
Wechseln Sie nun wiederum die Rolle - navigieren Sie zu den Gemeinsamen Komponenten
der Master-Applikation. Gehen Sie zu den Eigenschaften der Werteliste LOV_EMP und
ändern Sie das SQL wie in Abbildung 7 dargestellt um.
Abbildung 7: Werteliste in der Master-Applikation ändern
Ändern Sie auch die anderen Wertelisten, wenn Sie möchten. Abbildung 7
zeigt im Bereich der Subscriptions, welche Applikationen die Werteliste
abonniert haben. Dennoch bleibt APEX höchst flexibel, wie das folgende
Experiment zeigen wird: Exportieren Sie die Master-Applikation und löschen
Sie sie dann - wir wollen mal sehen, ob die anderen Anwendungen nun noch
funktionieren.
Und sie funktionieren noch. Ein Start der Child-Anwendung sollte wieder das Bild
aus Abbildung 6 zeigen. Das liegt daran, dass die Definitionen erstmal tatsächlich kopiert
werden. Zusätzlich wird das Abonnement künftiger Änderungen
gespeichert und zwar nicht bei der Master-Applikation, sondern bei der
abonnierenden Anwendung. Das hat den Vorteil, dass die Master-Anwendung gelöscht und
durch eine neue Version ersetzt werden kann, ohne dass die Abonnements verlorengehen. Nur
die Anwendungs-ID der Master-Anwendung muss stabil bleiben.
Nachdem Sie die Anwendung also wieder re-importiert und dabei darauf geachtet haben,
dass die Applikations-ID gleich bleibt, navigieren Sie wieder zu den Gemeinsamen
Komponenten und dort zu den Wertelisten, die Sie geändert haben. Klicken Sie dann
im Bereich Subscriptions auf Werteliste veröffentlichen (Abbildung 8).
Abbildung 8: Werteliste veröffentlichen
Sie sehen zunächst ein Bestätigungsfenster - dort klicken Sie nochmals
auf Alles aktualisieren. Und damit werden die Änderungen auf alle Anwendungen,
welche die Werteliste abonniert haben, übertragen. Die Seite aus Abbildung 6
sieht fortan wie in Abbildung 9 aus.
Abbildung 9: Anwendungsseite nach Veröffentlichung der Änderungen
Der Subscription-Mechanismus ist schon sehr lange in APEX enthalten und
eine hervorragende Möglichkeit zur zentralen Verwaltung häufig gebrauchter
Anwendungskomponenten. Eine Master-Applikation kann von einer zentralen Stelle
bereitgestellt und von jedem Workspace-Eigentümer importiert werden. Die konkreten
APEX-Anwendungen abonnieren dann die Themes, Templates, Wertelisten oder anderen
Komponenten. Bei einer neuen Version der Master-Applikation wird diese wiederum
zentral bereitgestellt, von den Workspace-Eigentümern importiert und die Änderungen
werden dann im beschriebenen Push-Verfahren auf die tatsächlichen Applikationen verteilt.
Professioneller und einfacher kann man sich zentrales Komponenten-Management eigentlich
gar nicht vorstellen.
Zurück zur Community-Seite
|