(vision) SCS/DDD
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
@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
|
||||
Reference in New Issue
Block a user