From 2d2f1aa025f774211b876b79b047a088bf46ecbd Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Thu, 6 Mar 2025 15:40:08 +0100 Subject: [PATCH] OZG-4097 readme: Add sequence diagrams for send and receive --- README.md | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e2d81a..e985ee9 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,105 @@ # OSIv2-Postfach-Anbindung für OZG-Cloud-Nachrichten -Anbindung des OSIv2-Postfachs für die OZG-Cloud. +Senden und Empfangen von Postfach-Nachrichten über die OSI-Postfach-Facade 2.0 (OPF). +## Senden einer Postfach-Nachricht +```mermaid +%% Senden einer Nachricht + sequenceDiagram + participant N as nachrichten-manager + participant A as file-manager + participant B as Client + participant C as OPF + activate A + activate C + activate B + activate N + N->>B: OsiPostfachRemoteService::sendMessage + Note left of B: (1) Hochladen der Anhänge + B->>A: GRPC findBinaryFilesMetaData + A-->>B: {Liste an Anhang-Metadaten} + loop Für jeden Anhang + B->>A: GRPC GetBinaryFileContent + loop Für jeden Daten-Chunk + B->>C: POST /Quarantine/v1/Upload/Chunked (chunk) + C-->>B: + end + A-->>B: + B->>C: POST /Quarantine/v1/Upload/Chunked (empty chunk) + C-->>B: + end + deactivate A + Note left of B: (2) Warten auf Prüfung der hochgeladenen Anhänge + loop Regelmäßiges Polling bis alle Anhänge geprüft sind + loop Für alle Anhänge + B->>C: GET /Quarantine/v1/Upload/{guid} + C-->>B: + end + end + Note left of B: (3) Nachricht senden + B->>C: POST /MessageExchange/v1/Send/{mailboxId} + C-->>B: + deactivate C + B-->>N: + deactivate B + deactivate N +``` + +## Empfangen von Postfach-Nachrichten + +```mermaid +%% Empfangen einer Nachricht + sequenceDiagram + participant N as nachrichten-manager + participant A as file-manager + participant B as Client + participant C as OPF + activate A + activate C + activate B + activate N + N->>B: OsiPostfachRemoteService::receiveMessages + B->>C: GET /MessageExchange/v1/Receive + C-->>B: {Liste an Nachrichten-Kennungen (max 100)} + loop Für jede Nachrichten-Kennung (messageId) + Note left of B: (1) Nachricht abrufen + B->>C: GET /MessageExchange/v1/Receive/{messageId} + C-->>B: {Nachricht mit Anhang-Metadaten} + Note left of B: (2) Herunterladen der Anhänge + loop Für jeden Anhang + B->>C: GET /MessageExchange/v1/Receive/{messageId}/Attachment/{attachmentId} + B->>A: GRPC UploadBinaryFileAsStream + A-->>B: + C-->>B: + end + end + deactivate A + deactivate C + B->>N: {Stream an Postfach-Nachrichten} + deactivate B + deactivate N +``` + +Der nachrichten-manager erhält von osiv2-postfach einen Stream von Postfach-Nachrichten. Nach der erfolgreichen Verarbeitung einer Nachricht sollte er `OsiPostfachRemoteService::deleteMessage` aufrufen: + +```mermaid +%% Empfangen einer Nachricht + sequenceDiagram + participant N as nachrichten-manager + participant B as Client + participant C as OPF + activate C + activate B + activate N + N->>B: OsiPostfachRemoteService::deleteMessage + B->>C: GET /MessageExchange/v1/Delete/{messageId} + C->>B: + deactivate C + B-->>N: + deactivate B + deactivate N +``` ## Client-Authentifizierung beim Servicekonto -- GitLab