Files
meldestelle/docs/bounded-contexts-design.md
T
2025-07-17 15:17:31 +02:00

196 lines
4.3 KiB
Markdown

# Bounded Contexts Design für Self-Contained Systems
## Übersicht
Das Meldestelle-System wird in 7 Bounded Contexts unterteilt, um eine Self-Contained Systems (SCS) Architektur zu implementieren.
## Bounded Contexts
### 1. Member Management Context (member-management)
**Verantwortlichkeiten:**
- Personenverwaltung (Reiter, Funktionäre, Kontaktpersonen)
- Vereinsverwaltung (Reitvereine, Verbände)
- Mitgliedschaftsbeziehungen
**Kern-Entitäten:**
- DomPerson
- DomVerein
**APIs:**
- `/api/members/persons`
- `/api/members/clubs`
- `/api/members/memberships`
**Abhängigkeiten:**
- Master Data Context (für Länder/Bundesländer)
- Data Integration Context (für ZNS Import)
---
### 2. Horse Registry Context (horse-registry)
**Verantwortlichkeiten:**
- Pferderegistrierung und -verwaltung
- Besitzverhältnisse
- Abstammungsinformationen
**Kern-Entitäten:**
- DomPferd
**APIs:**
- `/api/horses`
- `/api/horses/ownership`
- `/api/horses/pedigree`
**Abhängigkeiten:**
- Member Management Context (für Besitzer/Verantwortliche)
- Data Integration Context (für ZNS Import)
---
### 3. License & Qualification Context (license-management)
**Verantwortlichkeiten:**
- Lizenzverwaltung
- Qualifikationstracking
- Gültigkeitsüberwachung
**Kern-Entitäten:**
- DomLizenz
- DomQualifikation
- LizenzTypGlobal
- QualifikationsTyp
**APIs:**
- `/api/licenses`
- `/api/qualifications`
- `/api/licenses/validity`
**Abhängigkeiten:**
- Member Management Context (für Lizenzinhaber)
- Master Data Context (für Lizenztypen)
---
### 4. Event Management Context (event-management)
**Verantwortlichkeiten:**
- Turnier- und Veranstaltungsorganisation
- Terminplanung
- Veranstaltungsrahmen
**Kern-Entitäten:**
- Turnier
- Veranstaltung
- VeranstaltungsRahmen
- Pruefung_Abteilung
**APIs:**
- `/api/events`
- `/api/tournaments`
- `/api/events/schedule`
**Abhängigkeiten:**
- Member Management Context (für Funktionäre)
- Master Data Context (für Plätze)
- Competition Management Context (für Bewerbe)
---
### 5. Master Data Context (master-data)
**Verantwortlichkeiten:**
- Referenzdatenverwaltung
- Geografische Daten
- Altersklassendefinitionen
**Kern-Entitäten:**
- BundeslandDefinition
- LandDefinition
- AltersklasseDefinition
- Sportfachliche_Stammdaten
- Platz
**APIs:**
- `/api/masterdata/countries`
- `/api/masterdata/states`
- `/api/masterdata/age-classes`
- `/api/masterdata/venues`
**Abhängigkeiten:**
- Keine (Basis-Context)
---
### 6. Data Integration Context (data-integration)
**Verantwortlichkeiten:**
- OEPS ZNS Datenimport
- Datentransformation
- Staging-Management
**Kern-Entitäten:**
- Person_ZNS_Staging
- Pferd_ZNS_Staging
- Verein_ZNS_Staging
**APIs:**
- `/api/integration/import`
- `/api/integration/staging`
- `/api/integration/validation`
**Abhängigkeiten:**
- Alle anderen Contexts (für Datenverteilung)
---
### 7. Competition Management Context (competition-management)
**Verantwortlichkeiten:**
- Bewerbssetup
- Disziplin-spezifische Regeln
- Wertungssystem
**Kern-Entitäten:**
- Bewerb
- Abteilung
- Pruefungsaufgabe
- DressurPruefungSpezifika
- SpringPruefungSpezifika
- Meisterschaft_Cup_Serie
**APIs:**
- `/api/competitions`
- `/api/competitions/disciplines`
- `/api/competitions/scoring`
**Abhängigkeiten:**
- Event Management Context (für Turniere)
- Member Management Context (für Teilnehmer)
- Horse Registry Context (für Pferde)
## Inter-Context Communication
### Synchrone Kommunikation
- REST APIs zwischen Contexts
- Shared DTOs für Datenaustausch
### Asynchrone Kommunikation
- Event-basierte Kommunikation für lose Kopplung
- Domain Events für wichtige Geschäftsereignisse
### Shared Kernel
- Gemeinsame Enums und Basis-DTOs
- Serializer und Validatoren
- Utility-Klassen
## Deployment-Strategie
Jeder Bounded Context wird als separates Modul implementiert:
- Eigene Gradle-Module
- Separate Datenbank-Schemas (optional)
- Unabhängige Deployment-Einheiten
- Eigene API-Endpunkte
## Vorteile der SCS-Architektur
1. **Autonomie**: Jeder Context kann unabhängig entwickelt und deployed werden
2. **Skalierbarkeit**: Contexts können individuell skaliert werden
3. **Technologie-Diversität**: Verschiedene Technologien pro Context möglich
4. **Team-Autonomie**: Teams können unabhängig an verschiedenen Contexts arbeiten
5. **Fehler-Isolation**: Probleme in einem Context beeinträchtigen andere nicht