Interaktion mit benutzer
Interaktionen mit Benutzer
Ruft ein Actor eine Oberfläche auf, wird vom Frontend ein Request mit Kontextdaten wie z.B. die Kontext-Entität und gewünschte Oberfläche an das Backend abgesetzt. Im Backend wird geprüft, ob der Actor berechtigt ist, die Entität mit der gewünschten Oberfläche aufzurufen. Anhand der Kontext-Entität und den Bindings in der Oberflächen-Definition werden die benötigten Daten evaluiert und über das Persistenzframework auf der Datenbank abgefragt. Alle relevanten Daten werden als dynamisches Model an die Frontendanwendung zurückgegeben.
Die Frontendanwendung prüft, ob sie die anzuzeigende Oberfläche im internen Cache gespeichert hat, wenn nicht, wird die parametrierte Definition über den Backendservice geladen, als Javascript-Oberfläche gerendert und im Cache gespeichert. Die Oberfläche wird an das dynamische Model gebunden.
Enthält die Oberfläche Controls wie Grids, Valuelist etc. werden diese bei Bedarf asynchron über das Backend nachgeladen. Die Model-Daten werden, sofern der Benutzer berechtigt ist, im Backend für die übergebenen Kontext-Daten gemäss Parametrierung evaluiert, aufbereitet und als dynamisches Model zurückgegeben.
Das folgende Sequenzdiagramm zeigt, wie der Request für die Anzeige einer Oberfläche mit Entitäts-Kontext verarbeitet wird.
sequenceDiagram
title Entität in Gui anzeigen
actor a as Sachbearbeiter/in
participant f as Frontend
participant b as Backend
participant g as DynamicGui
participant d as Data
Note over f,d: Der Actor muss authentifiziert sein. Siehe Authorization Code Flow.
a ->> f: OpenGui
activate f
f ->> b: getGuiData
activate b
b ->> b: checkPermission
b ->> g: getGuiData
activate g
g->> d: select guidata
activate d
d ->> g: resultset
deactivate d
g ->> b: dynamic model
deactivate g
b ->> f: dynamic model
deactivate b
alt is gui in cache
f ->> f: getGuidFromCache
else else
f ->> b: getGuidefinition
activate b
b ->> g: getGuidefinition
activate g
g ->> b: guiDefinition
deactivate g
b ->> f: guidefinition
deactivate b
f ->> f: renderGui
f ->> f: putGuiToCache
end
f ->> a: Gui
deactivate f
opt falls Gui mit Grid
activate f
f ->> b: getDynamicGridData
activate b
b ->> b: checkPermission
b ->> d: select gridData
activate d
d ->> b: resultset
deactivate d
b ->> f: dynamicGridData
deactivate b
deactivate f
end