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.

Die Master-Anwendung 99999999 wurde erstellt

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.

Die Wertelisten wurden in der Masteranwendung erstellt

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.

Neue Werteliste als Kopie einer vorhandenen erstellen

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.

Die Vorlage für die Werteliste befindet sich in der Master-Applikation

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.

Die Anwendung abonniert alle Wertelisten aus der Master-Applikation

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 ...

APEX-Anwendungsseite mit den Wertelisten

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.

Werteliste in der Master-Applikation ändern

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).

Werteliste veröffentlichen

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.

Anwendungsseite nach Veröffentlichung der Änderungen

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