2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Zur Vereinfachung soll angenommen werden, dass der Ablauf des Prozess komplett ohne<br />
weitere Benutzeraktivitäten auskommt – technisch formuliert: Die Aktivität, die den Prozess<br />
beschreibt, enthält keine «userAction»-Aktion. Ein typischer Anwendungsfall einer<br />
solchen Navigationsstruktur könnte z.B. in einem Online-Shop auftreten. In der Detail-<br />
Ansicht eines Produkts befindet sich u.a. eine Schaltfläche 'Zum Warenkorb hinzufügen'.<br />
Wird diese betätigt, so wird ein serverseitiger Prozess initiiert, der entsprechende<br />
Geschäftslogik ausführt (Hinzufügen des Produkts zum Inhalt des Warenkorbs, Aktualisierung<br />
des Gesamtpreises etc.) und abschließend, im Falle eines synchronen Aufrufs, die Detailseite<br />
des Produkts erneut an den Client sendet - diesmal allerdings mit einer Nachricht über den<br />
Erfolg des Prozesses und mit einer aktualisierten Warenkorbanzeige (Es soll angenommen<br />
werden, dass der Warenkorb des Benutzers in einer Sidebar angezeigt wird, die fest zum<br />
Layout des Online-Shops gehört, also auf jeder Seite des Online-Shops zu sehen ist.)<br />
Tatsächlich wäre es sinnvoll, wenn die Anwendung den Prozess nicht synchron, sondern<br />
asynchron aufrufen würde. Es ist nicht nötig, nach Abschluss der serverseitigen<br />
Aktualisierung des Modells die gesamte Detailseite neu zu laden – es genügt vollkommen,<br />
nur die Nachricht in die Seite einzufügen und die Warenkorb-Anzeige zu aktualisieren 56 . Wie<br />
sähe aber die Modellierung dieser asynchronen Variante mit <strong>UWE</strong> aus? Oder: Wie würde sie<br />
sich von der synchronen Variante unterscheiden?<br />
Es scheint wenig angebracht, den Unterschied zwischen den beiden Alternativen als ein RIA-<br />
Feature zu modellieren, dessen Verhalten durch einen Zustandsautomaten beschrieben wird.<br />
Tatsächlich geht es allein um zwei verschiedene Kommunikationsweisen mit dem Server. Und<br />
alles, was benötigt wird, um den Entwickler für die Umsetzung der gewünschten<br />
Funktionalität ausreichend zu instruieren, ist ein kurzer Hinweis, dass der entsprechende<br />
Prozess nicht wie üblich synchron, sondern eben asynchron aufgerufen werden soll.<br />
Es bietet sich an, diese Information direkt an den Prozesslink zu heften, der den Übergang von<br />
der Produkt-Detailansicht zum Prozess der Warenkorb-Aktualisierung repräsentiert. Dies<br />
kann mit Hilfe eines Tagged Values geschehen, dessen Wert die Art des Requests angibt. Dazu<br />
wird im <strong>UWE</strong>-Profil dem Modellelement «processLink» am einfachsten ein Metaattribut<br />
asynchronous vom Typ Boolean mit dem Defaultwert false hinzugefügt. Asynchron<br />
zu realisierende Prozessaufrufe kann der Modellierer dann einfach dadurch kennzeichnen,<br />
dass er den Wert dieses Tagged Values für den betreffenden Prozesslink auf true setzt.<br />
Auch im PVS findet sich ein Anwendungsfall dieses Szenarios: Der Login-Mechanismus des<br />
Systems wurde über einen asynchronen Serveraufruf realisiert.<br />
Abbildung 42: PVS-Navigationsmodell (Ausschnitt): Login<br />
Ein asynchroner Login-Request eignet sich hier vor allem deswegen, weil es die erfolgreiche<br />
Anmeldung eines Benutzers nicht erfordert, eine komplett neue Seite an den Client zu senden.<br />
Tatsächlich müssen nur einige UI-Komponenten aktualisiert werden, die zum festen<br />
Seitenlayout der Anwendung gehören (analog zur Warenkorb-Anzeige im vorherigen<br />
56 Ein Beispiel für eine solche Realisierung findet sich bei dem Online-Shop 'musicload' (www.musicload.de)<br />
71