@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) <> ' 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 <> ' 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 <> { + code : string + bezeichnung : string + sparte : string } class QualifikationsTyp_Referenz <> { + 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