Interaktion mit service
Interaktion mit anderen Services
Synchron
Der Request eines als synchron parametrierten APIs wird nach der Validierung der übergebenen Daten und der Prüfung der Berechtigung sofort gemäss der hinterlegten Parametrierung verarbeitet. Das Ergebnis wird dem Aufrufer erst nach erfolgreicher Verarbeitung zurückgegeben.
Das folgende Sequenzdiagramm zeigt, wie der Request eines synchron parametrierten APIs verarbeitet wird:
sequenceDiagram
title Synchroner Request
actor a as Service
participant b as Backend
participant p as ProcessEngine
participant d as Data
Note over b,d: Der Service muss autorisiert sein. Siehe Authorization Code Flow.
a ->> b: POST /DynamicApi/ProcessRequest
activate b
b ->> b: checkPermission
b ->> p: executeProcess
activate p
loop Request-Verarbeitung
p ->> d: select data
activate d
d ->> p: resultset
deactivate d
p ->> p: processData
Note right of p: Verarbeitung gemäss Parametrierung!
end
p ->> d: write data
activate d
d -->> p: success
deactivate d
p ->> b: result
b ->> a: result
deactivate p
deactivate b
Asynchron
Der Request eines als asynchron parametrierten APIs wird nach der Validierung der übergebenen Daten und der Prüfung der Berechtigung von der Task-Engine gespeichert. Erhält der Aufrufer einen Statuscode 200 zurück, kann er sich sicher sein, dass der Request angenommen wurde. Die Taskengine verarbeitet je nach Auslastung und Parametrierung den Request sofort oder zu einem spätern Zeitpunkt.
Das folgende Sequenzdiagramm zeigt, wie der Request eines asynchron parametrierten APIs verarbeitet wird:
sequenceDiagram
title Asynchroner Request
actor a as Service
participant b as Backend
participant t as TaskEngine
participant p as ProcessEngine
participant d as Data
Note over b,d: Der Service muss autorisiert sein. Siehe Authorization Code Flow.
a ->> b: POST /DynamicApi/ProcessRequest
activate b
b ->> b: checkPermission
b ->> t: SaveRequest
activate t
t ->> d: save task
activate d
d -->> t: success
deactivate d
t -->> b: success
deactivate t
b -->> a: success
deactivate b
activate b
t ->> t: timer #128336;
activate t
t ->> d: get task
activate d
d -->> t: task
deactivate d
t ->> p: executeProcess
activate p
loop Request-Verarbeitung
p ->> d: select data
activate d
d ->> p: resultset
deactivate d
p ->> p: processData
end
p ->> d: write data
activate d
d -->> p: success
deactivate d
p -->> t: success
deactivate p
deactivate t