Files
meldestelle/docs/diagrams/scs-ddd-vision/Lizenzen_und_Quali_Context.puml
T
2025-07-01 23:53:29 +02:00

94 lines
3.3 KiB
Plaintext

@startuml
title "Datenmodell: Lizenzen_und_Qualifikationen_Context"
!theme vibrant
' Der Bounded Context wird als Paket dargestellt.
package "Lizenzen & Qualifikationen" as LizenzContext {
' Das Aggregate Root: Der Lizenznehmer ist die zentrale Entität.
class Lizenznehmer <<(A,violet) Aggregate Root>> {
' Referenz zum Personen-Context, KEINE vollständige Kopie der Person.
+ oepsSatzNrPerson : VARCHAR(6)
--
' Minimal notwendige Daten zur Identifikation im Fachkontext.
name : string
vorname : string
--
' Geschäftslogik wird hier gekapselt.
+ hatLizenz(lizenzTypCode) : boolean
+ hatQualifikation(qualTypCode) : boolean
+ fuegeLizenzHinzu(lizenzDetails)
+ fuegeQualifikationHinzu(qualDetails)
}
' Eine Entität innerhalb des Lizenznehmer-Aggregates.
entity Lizenz {
+ lizenzId : UUID
--
' Bezieht sich auf den Typ der Lizenz.
# lizenzTypCode : VARCHAR(4) <<FK>>
' Daten aus LIZENZ01.dat.
+ gueltigBis : Date
+ ausgestelltAm : Date
+ bezahltImJahr : INTEGER
}
' Eine weitere Entität innerhalb des Lizenznehmer-Aggregates.
entity Qualifikation {
+ qualifikationId : UUID
--
' Bezieht sich auf den Typ der Qualifikation.
# qualifikationsTypCode : VARCHAR <<FK>>
' Daten aus RICHT01.dat (indirekt).
+ erworbenAm : Date
+ gueltigBis : Date
}
' Die Definitionen der Lizenz- und Qualifikationstypen
' kommen aus einem anderen Bounded Context (OeTO-Verwaltung).
' Hier werden sie als Referenz oder Value Object verwendet.
' Wir stellen sie hier vereinfacht dar, um die Beziehung zu zeigen.
class LizenzTyp_Referenz <<VO>> {
+ code : string
+ bezeichnung : string
+ sparte : string
}
class QualifikationsTyp_Referenz <<VO>> {
+ code : string
+ bezeichnung : string
+ sparte : string
}
' -- Beziehungen --
' Der Lizenznehmer besitzt seine Lizenzen und Qualifikationen (Komposition).
Lizenznehmer "1" *-- "0..*" Lizenz
Lizenznehmer "1" *-- "0..*" Qualifikation
' Jede Lizenz und Qualifikation ist von einem bestimmten Typ.
' Dies ist eine Assoziation, da die Typen außerhalb des Aggregates existieren.
Lizenz ..> LizenzTyp_Referenz : "ist vom Typ"
Qualifikation ..> QualifikationsTyp_Referenz : "ist vom Typ"
}
note right of Lizenznehmer
**Aggregate Root: Lizenznehmer**
* **Verantwortung:** Stellt sicher, dass ein Lizenznehmer nur gültige und konsistente Lizenzen/Qualifikationen besitzen kann.
* **Referenz:** Die `oepsSatzNrPerson` ist der Schlüssel zur Verknüpfung mit dem `Personen_und_Vereine_Context`.
* **Isolation:** Dieser Context speichert bewusst *keine* Adress- oder Kontaktdaten. Wenn diese benötigt werden, müssen sie vom `Personen_und_Vereine_Context` angefragt werden.
end note
note top of LizenzTyp_Referenz
**Referenzen zu anderen Contexts**
`LizenzTyp_Referenz` und `QualifikationsTyp_Referenz`
sind keine Entitäten, die *hier* verwaltet werden.
Sie repräsentieren die Daten, die aus dem
`Service_OeTO_Verwaltung` stammen und hier
zur Beschreibung von Lizenzen und Qualifikationen
genutzt werden.
end note
@enduml