94 lines
3.3 KiB
Plaintext
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
|