67 lines
1.7 KiB
Plaintext
67 lines
1.7 KiB
Plaintext
@startuml
|
|
title "Datenmodell: Lizenzen_und_Qualifikationen_Context"
|
|
|
|
!theme vibrant
|
|
|
|
package "Lizenzen & Qualifikationen" {
|
|
|
|
' Das Aggregate Root: Der Lizenznehmer ist die zentrale Entität,
|
|
' die Konsistenz für ihre Lizenzen und Qualifikationen sicherstellt.
|
|
class Lizenznehmer <<(A,violet) Aggregate Root>> {
|
|
' Referenz zum Personen-Context, keine vollständige Person
|
|
+ oepsSatzNrPerson : VARCHAR(6)
|
|
--
|
|
name : string
|
|
vorname : string
|
|
' Methode zur Überprüfung der Startberechtigung
|
|
+ hatStartberechtigungFuer(anforderungen) : boolean
|
|
}
|
|
|
|
' Entität innerhalb des Aggregates
|
|
class Lizenz {
|
|
+ gueltigBis : Date
|
|
+ ausgestelltAm : Date
|
|
+ bezahltImJahr : INTEGER
|
|
}
|
|
|
|
' Entität innerhalb des Aggregates
|
|
class Qualifikation {
|
|
+ erworbenAm : Date
|
|
+ bemerkung : string
|
|
}
|
|
|
|
' Value Object: Beschreibt einen Lizenztyp, hat keine eigene Identität
|
|
class LizenzTyp <<VO>> {
|
|
+ code : string
|
|
+ bezeichnung : string
|
|
+ sparte: string
|
|
}
|
|
|
|
' Value Object: Beschreibt einen Qualifikationstyp
|
|
class QualifikationsTyp <<VO>> {
|
|
+ code : string
|
|
+ bezeichnung : string
|
|
+ sparte : string
|
|
}
|
|
|
|
' Beziehungen innerhalb des Aggregates
|
|
Lizenznehmer "1" *-- "0..*" Lizenz : "besitzt"
|
|
Lizenznehmer "1" *-- "0..*" Qualifikation : "hat"
|
|
|
|
' Beziehungen zu Value Objects
|
|
Lizenz "1" -- "1" LizenzTyp
|
|
Qualifikation "1" -- "1" QualifikationsTyp
|
|
}
|
|
|
|
note right of Lizenznehmer
|
|
**Aggregate Root: Lizenznehmer**
|
|
Alle Änderungen an Lizenzen oder
|
|
Qualifikationen einer Person
|
|
sollten über das Lizenznehmer-Objekt
|
|
laufen, um die Geschäftsregeln
|
|
(z.B. "Darf diese Lizenz haben?")
|
|
zu wahren.
|
|
end note
|
|
|
|
@enduml
|