Skip to content

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
Hold "Alt" / "Option" to enable pan & zoom