ADF Task Flows: Wesentlich mehr als nur Page Flow

  • Erstellt von Jürgen Menge
  • Infrastruktur, Development, Java

Gehört die Definition des Page Flows (der Aufrufreihenfolge von Webseiten) zum Standard-Repertoire vieler Web-Frameworks, geht Oracle mit ADF hier einen wesentlichen Schritt weiter. ADF Task Flows bilden auch nicht sichtbare Teile eines Ablaufes (zum Beispiel den Aufruf einer Methode) ab. Sie sind wiederverwendbar und können ineinander geschachtelt sein. DOAG Online stellt ADF Task Flows vor und erklärt, warum sie einen so wichtigen Platz im Framework ADF einnehmen.

ADF Task Flows

Eine Web-Anwendung besteht in der Regel aus einer Vielzahl einzelner Seiten und Aktionen, die in Abhängigkeit vom Benutzer und bestimmten Bedingungen nacheinander aufgerufen werden. Diese Abfolge wird in ADF Faces und ADF Mobile innerhalb einer XML-Datei definiert, die im JDeveloper oder in Eclipse als Diagramm visualisiert und bearbeitet werden kann. (siehe Abbildung 1)

Diese Datei wird zur Laufzeit vom Controller Servlet der Anwendung interpretiert und steuert den Navigationsfluss der Applikation. Ändert sich die gewünschte Reihenfolge der Abarbeitung, so werden diese Modifikationen nicht im Source Code der Seiten vorgenommen, sondern direkt in der Definitionsdatei für den Task Flow.

Erforderliche Logik wird in Managed (Java) Beans programmiert, die im Task Flow registriert werden. Der Task Flow kümmert sich zur Ausführungzeit um die Instanziierung der Bean und um das Aufräumen, wenn diese nicht mehr benötigt wird.

Ein wesentlicher Vorteil der Task Flows besteht in ihrer Fähigkeit, Statusinformationen innerhalb der User Session in eigenen Speicherbereichen zu verwalten.

  • Unbounded Task Flows

Ein Unbounded Task Flow (Abkürzung: UTF, Default-Konfiguration in der adfc-config.xml) bildet normalerweise den Einstiegspunkt einer ADF-Applikation und steht in der Hierarchie der Task Flows an der Spitze. Jede Seite innerhalb eines UTF kann über ihre URL aufgerufen werden. Da ein UTF bei einer größeren Zahl von Seiten sehr schnell unübersichtlich werden kann und der Aspekt der Wiederverwendbarkeit nicht zum Zuge kommt, werden zusätzliche Bounded Task Flows definiert.

  • Bounded Task Flows

Bounded Task Flows (Abkürzung: BTF) werden über einen Task Flow Call aus dem übergeordneten Task Flow aufgerufen und können in beliebiger Tiefe geschachtelt werden. BTF besitzen nur einen definierten Einstiegspunkt und können über die ADF Security abgesichert werden. Symbolisiert wird der Einstiegspunkt durch den grünen Hintergrundschatten der Aktivität (siehe Abbildung 2).

Da beim Aufruf eines BTF beliebige Parameter übergeben werden können, lässt sich durch eine entsprechende Programierung ein hoher Grad an Wiederverwendbarkeit erreichen. So wird in der Abbildung 2 der typische Login-Prozess eines Benutzers darstellt, der in allen ADF-Applikationen eines Unternehmens auf einfache Weise eingebunden werden kann.

Ein BTF besitzt noch einen weiteren wesentlichen Vorteil. Besteht der BTF aus Seiten-Fragmenten (Page Fragments), kann die Abfolge dieser Fragmente statisch oder dynamisch innerhalb einer Seitenregion ausgeführt werden, ohne dass im Browser auf eine neue Seite navigiert wird (siehe Abbildung 3.

Eine besondere Form des Navigation innerhalb des BTF ist der Train, eine wizard-ähnliche Abfolge von Seiten-Fragmenten, in denen nur vor- oder rückwärts navigiert werden kann. Der Train eignet sich sehr gut zur schrittweisen Führung eines Anwenders durch einen lineraren Arbeitsprozess (siehe Abbildung 4).

Die Erstellung eines BTF kann durch die Verwendung eines Task Flow Templates beschleunigt und standardisiert werden. So ist es beispielsweise sinnvoll, im Task Flow Template die Behandlung von Fehlersituationen (Exception Handling) zu definieren.

Wiederverwendbarkeit von Task Flows

Die Vorteile von Task Flows erschließen sich erst vollständig, wenn diese mehrfach in Applikationen verwendet werden. Task Flows können als Bibliotheken exportiert und in den Resource Catalog des JDeveloper aufgenommen werden. Auf diese Weise können Task Flows als Funktionsbausteine anderen Applikationen zur Verfügung gestellt werden.

So werden beispielsweise bei der Entwicklung von Portal-Applikationen mit Oracle WebCenter viele vorgefertige Funktionen als Bounded Task Flows bereitgestellt.