60 lines
2.2 KiB
Plaintext
60 lines
2.2 KiB
Plaintext
@startuml
|
|
title "Prozess & Event-Flow: Nennung wird abgegeben"
|
|
|
|
!theme vibrant
|
|
|
|
actor Reiter
|
|
|
|
' Die Teilnehmer sind unsere Bounded Contexts (Services) und ein Message Bus für Events.
|
|
participant "API Gateway / Frontend" as Gateway
|
|
participant "Nennungs_Context" as Nenn
|
|
participant "Veranstaltungs_Context" as Veranst
|
|
participant "Lizenzen_und_Qualifikationen_Context" as Lizenz
|
|
queue "Message Bus" as Bus
|
|
participant "Benachrichtigungs_Service" as Notify
|
|
|
|
Reiter -> Gateway : POST /nennungen\n(reiterId, pferdId, pruefungAbteilungId)
|
|
|
|
' 1. Command wird an den zuständigen Context gesendet
|
|
Gateway -> Nenn : **Command:** NennungAbgeben(daten)
|
|
activate Nenn
|
|
note right of Nenn: Empfängt den Befehl,\neine neue Nennung zu erstellen.
|
|
|
|
' 2. Synchrone Queries zur Validierung
|
|
Nenn -> Veranst : **Query:** getPruefungsAnforderungen(pruefungAbteilungId)
|
|
activate Veranst
|
|
Veranst --> Nenn : anforderungen {erf. Lizenzen, erf. Alter, ...}
|
|
deactivate Veranst
|
|
note left of Nenn: Holt die aktuellen Anforderungen\nfür die genannte Prüfung.
|
|
|
|
Nenn -> Lizenz : **Query:** hatStartberechtigung(reiterId, anforderungen)
|
|
activate Lizenz
|
|
Lizenz --> Nenn : {istBerechtigt: true}
|
|
deactivate Lizenz
|
|
note left of Nenn: Prüft die Startberechtigung des Reiters\ngegen die Anforderungen.
|
|
|
|
' 3. Interne Verarbeitung und Zustandsänderung
|
|
alt Startberechtigung erteilt
|
|
Nenn -> Nenn : Nennungs-Aggregat erstellen\n(Status: EINGEGANGEN)
|
|
note right of Nenn: Die Nennung wird intern gespeichert.\nDie Transaktion ist hier abgeschlossen.
|
|
|
|
' 4. Asynchrones Event wird veröffentlicht
|
|
Nenn ->> Bus : **Event:** NennungWurdeEingereicht {nennungId, reiterId, ...}
|
|
note left of Bus: Das Event wird auf den Bus gelegt.\nDer Nennungs-Context ist nun fertig\nund muss nicht auf die Verarbeitung\ndes Events warten.
|
|
|
|
Gateway --> Reiter : HTTP 202 Accepted (Nennung wird verarbeitet)
|
|
|
|
' 5. Andere Services reagieren auf das Event
|
|
Bus ->> Notify : **Event:** NennungWurdeEingereicht
|
|
activate Notify
|
|
Notify -> Notify : Sende Bestätigungs-E-Mail an Reiter
|
|
deactivate Notify
|
|
|
|
else Startberechtigung nicht erteilt
|
|
Nenn -> Gateway : Fehler: Startberechtigung fehlt (z.B. HTTP 400)
|
|
Gateway --> Reiter : Fehlermeldung
|
|
end
|
|
deactivate Nenn
|
|
|
|
@enduml
|