133 lines
5.0 KiB
Plaintext
133 lines
5.0 KiB
Plaintext
@startuml
|
|
title "Detailliertes Datenmodell: Nennungs_Context"
|
|
|
|
!theme vibrant
|
|
|
|
' Externe Referenzen werden der Übersichtlichkeit halber als vereinfachte Entitäten dargestellt.
|
|
package "Externe Referenzen (Andere Kontexte)" {
|
|
class Veranstaltungs_Context_API
|
|
class Personen_Context_API
|
|
class Lizenzen_Context_API
|
|
}
|
|
|
|
package "Nennungsabwicklung" as NennungsContext {
|
|
|
|
' #################### Aggregate Root: Nennung ####################
|
|
class Nennung <<(A,blue) Aggregate Root>> {
|
|
+ nennungId : UUID <<PK>>
|
|
--
|
|
' -- Snapshots von Daten aus anderen Kontexten --
|
|
' Daten zur Prüfung/Abteilung zum Zeitpunkt der Nennung
|
|
+ pruefung : PruefungsReferenzVO
|
|
' Daten zum Reiter zum Zeitpunkt der Nennung
|
|
+ reiter : ReiterReferenzVO
|
|
' Daten zum Pferd zum Zeitpunkt der Nennung
|
|
+ pferd : PferdeReferenzVO
|
|
' Optionaler Ersatzreiter gem. KKARTEI-Satz
|
|
+ ersatzreiter : ReiterReferenzVO
|
|
--
|
|
' -- Nennungsspezifische Attribute --
|
|
+ nennungsZeitpunkt : timestamp
|
|
+ status : NennungsStatusVO
|
|
' Kopfnummer gem. KKARTEI-Satz
|
|
+ zugewieseneKopfnummer : VARCHAR(4)
|
|
' Nenn- und Startgeld
|
|
+ nenngebuehr : GeldbetragVO
|
|
' Zahlungsstatus der Nenngebühr
|
|
+ bezahlStatus : BezahlStatusVO
|
|
' Betrag, der lt. Nennliste eingezahlt wurde
|
|
' KKARTEI, Stelle 161-165
|
|
+ bezahltBetragKontrolle : GeldbetragVO
|
|
' Betrag, der mit dem Veranstalter verrechnet wird
|
|
' KKARTEI, Stelle 118-122
|
|
+ accontoBetrag : GeldbetragVO
|
|
' Box bestellt? Gem. KKARTEI-Satz
|
|
+ istStallReserviert : boolean
|
|
' Grund, falls die Nennung abgelehnt wurde
|
|
+ ablehnungsGrund : string
|
|
}
|
|
|
|
' #################### Value Objects (VOs) für Snapshots und Beschreibungen ####################
|
|
' Snapshot der wichtigsten Prüfungsdaten aus dem Veranstaltungs_Context.
|
|
class PruefungsReferenzVO <<VO>> {
|
|
' Referenz zur originalen Abteilung
|
|
+ pruefungAbteilungDbId : UUID
|
|
' Relevante Daten zum Zeitpunkt der Nennung
|
|
+ turnierName : string
|
|
+ bewerbBezeichnung : string
|
|
+ abteilungBezeichnung : string
|
|
' Anforderungsprofil, das zum Zeitpunkt der Nennung galt
|
|
+ anforderungsProfil : AnforderungsProfilVO
|
|
}
|
|
|
|
' Snapshot der wichtigsten Reiterdaten aus dem Personen_Context.
|
|
class ReiterReferenzVO <<VO>> {
|
|
' Referenz zur originalen Person
|
|
+ oepsSatzNrPerson : VARCHAR(6)
|
|
' Relevante Daten zum Zeitpunkt der Nennung
|
|
+ name : string
|
|
+ vereinsName : string
|
|
' Snapshot der Lizenzen zur Validierung
|
|
+ lizenzSnapshot : List<string>
|
|
}
|
|
|
|
' Snapshot der wichtigsten Pferdedaten aus dem Personen_Context.
|
|
class PferdeReferenzVO <<VO>> {
|
|
' Referenz zum originalen Pferd
|
|
+ oepsSatzNrPferd : VARCHAR(10)
|
|
' Relevante Daten zum Zeitpunkt der Nennung
|
|
+ name : string
|
|
}
|
|
|
|
' Kapselt die Anforderungen, die zum Zeitpunkt der Nennung gültig waren.
|
|
class AnforderungsProfilVO <<VO>> {
|
|
+ erlaubteAltersklassen : List<string>
|
|
+ erforderlicheLizenzen : List<string>
|
|
}
|
|
|
|
class GeldbetragVO <<VO>> {
|
|
+ wert : decimal
|
|
+ waehrung : string
|
|
}
|
|
|
|
' Enum für den Lebenszyklus einer Nennung.
|
|
enum NennungsStatusVO {
|
|
EINGEGANGEN
|
|
IN_PRUEFUNG
|
|
STARTBERECHTIGT_BESTAETIGT
|
|
ABGELEHNT
|
|
ZURUECKGEZOGEN
|
|
}
|
|
|
|
' Enum für den Zahlungsstatus.
|
|
enum BezahlStatusVO {
|
|
OFFEN
|
|
BEZAHLT
|
|
}
|
|
|
|
|
|
' #################### Beziehungen ####################
|
|
' Die Nennung ist das einzige Aggregat und enthält ihre beschreibenden VOs (Komposition).
|
|
Nennung "1" o-- "1" PruefungsReferenzVO
|
|
Nennung "1" o-- "1" ReiterReferenzVO
|
|
Nennung "1" o-- "1" PferdeReferenzVO
|
|
Nennung "1" o-- "0..1" ReiterReferenzVO : "Ersatzreiter"
|
|
Nennung "1" o-- "1" GeldbetragVO : "Nenngebühr"
|
|
Nennung "1" -- "1" NennungsStatusVO
|
|
Nennung "1" -- "1" BezahlStatusVO
|
|
}
|
|
|
|
' Beziehungen zu externen Kontexten (dargestellt als API-Aufrufe)
|
|
Nennung ..> Veranstaltungs_Context_API : "holt Prüfungsdetails"
|
|
Nennung ..> Personen_Context_API : "holt Reiter-/Pferdedetails"
|
|
Nennung ..> Lizenzen_Context_API : "prüft Startberechtigung"
|
|
|
|
note right of Nennung
|
|
**Aggregate Root: Nennung**
|
|
* **Verantwortung:** Eine Nennung ist eine unteilbare, transaktionale Einheit. Sie repräsentiert den "Vertrag" zwischen Reiter und Veranstalter für die Teilnahme an einer Prüfung.
|
|
* **Datenherkunft:** Viele Attribute sind direkt auf den `KKARTEI`-Satz im OEPS Pflichtenheft zurückzuführen, z.B. `ERSATZREITER` , `ACCONTO` , `STALL` und `BEZAHLT`.
|
|
* **Validierungslogik:** Bei der Erstellung oder Prüfung einer Nennung ruft das Aggregat andere Kontexte auf, um die aktuellen Daten zu verifizieren (z.B. "Ist die Lizenz des Reiters noch gültig?"). Die Entscheidung ("Akzeptiert" / "Abgelehnt") wird aber hier im `Nennungs_Context` getroffen und gespeichert.
|
|
end note
|
|
|
|
@enduml
|