Enterprise Maven Master
Master 16 - Real Runtime Applications - Projektbeschreibungen
Projektbeschreibungen
Seit dem Ausbau folgt jede Fachdomäne einer echten Hexagonal-Struktur:
domain (Aggregat mit Invarianten, wirft DomainRuleViolation), application (Use-Case-Service orchestriert Domain + Repository-Port), und die bestehende ...RuntimeFacade als Inbound-Adapter, der den RuntimeRequest/RuntimeResponse-Contract unverändert nach außen bedient. runtime-common liefert dafür den generischen Port AggregateRepository<T> plus die austauschbare InMemoryAggregateRepository<T>-Adapter-Implementierung.| Modul | Aufgabe | Ablauf | Pattern | Tests |
|---|---|---|---|---|
api-contracts | Gemeinsame Ein-/Ausgabe-Contracts (RuntimeRequest, RuntimeResponse) für alle Runtime-Anwendungen dieses Masters. | Eingang validieren (businessKey/amount) -> Contract bereitstellen | Value Object | RuntimeRequestTest (2): lehnt leeren businessKey ab, defaultet fehlenden amount/attributes. |
runtime-common | AbstractRuntimeFacade (Template Method) plus AggregateRepository<T>-Port und InMemoryAggregateRepository<T>-Adapter als gemeinsame Persistenz-Abstraktion für alle Domain-Schichten. | Eingang prüfen -> Idempotenz prüfen -> Regel anwenden -> Ergebnis melden | Template Method, Facade, Port/Adapter | AbstractRuntimeFacadeTest (3), InMemoryAggregateRepositoryTest (2): Speichern/Finden, unbekannter Key liefert leeres Optional. |
app-insurance-runtime | Policy-Aggregat (Domain) + PolicyUnderwritingService (Application) + InsuranceRuntimeFacade (Inbound-Adapter): Prämie muss innerhalb des Underwriting-Limits (100.000) liegen. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | PolicyTest (3), PolicyUnderwritingServiceTest (2), InsuranceRuntimeFacadeTest (3). |
app-banking-runtime | LedgerEntry-Aggregat + DebitService + BankingRuntimeFacade: eine Buchung darf den verfügbaren Saldo (1.000,00) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | LedgerEntryTest (3), DebitServiceTest (2), BankingRuntimeFacadeTest (3). |
app-healthcare-runtime | PatientVisit-Aggregat + CopayService + HealthcareRuntimeFacade: der Selbstbehalt darf die Obergrenze (500,00) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | PatientVisitTest (3), CopayServiceTest (2), HealthcareRuntimeFacadeTest (3). |
app-erp-runtime | Invoice-Aggregat + InvoiceApprovalService + ErpRuntimeFacade: eine Rechnung darf die Freigabeschwelle (250.000) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | InvoiceTest (3), InvoiceApprovalServiceTest (2), ErpRuntimeFacadeTest (3). |
app-telecom-runtime | ProvisioningRequest-Aggregat + ProvisioningService + TelecomRuntimeFacade: angeforderte Leitungen dürfen die Kapazitätsgrenze (1.000) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | ProvisioningRequestTest (3), ProvisioningServiceTest (2), TelecomRuntimeFacadeTest (3). |
app-logistics-runtime | Shipment-Aggregat + ShipmentDispatchService + LogisticsRuntimeFacade: das Sendungsgewicht darf das Limit (20.000 kg) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | ShipmentTest (3), ShipmentDispatchServiceTest (2), LogisticsRuntimeFacadeTest (3). |
app-legacy-migration-runtime | MigrationBatch-Aggregat + MigrationBatchService + LegacyMigrationRuntimeFacade: eine Migrationscharge darf die Batchgrenze (5.000 Datensätze) nicht überschreiten. | Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichern | Aggregate, Application Service, Inbound Adapter | MigrationBatchTest (3), MigrationBatchServiceTest (2), LegacyMigrationRuntimeFacadeTest (3). |
enterprise-reference-slice | Framework-neutrale Referenz für einen vollständigen Runtime-Lebenszyklus (Start/Health/Stop). | Konfigurieren -> Starten -> Health-Check -> Sicher stoppen | Command, Result Object | ApplicationLifecycleTest (bereits vorhanden, 3). |
runnable-smoke | Verdrahtet alle sieben Runtime-Facades zu einem End-to-End-Smoke-Test (mvn -pl runnable-smoke -am package). | Alle sieben APIs ausführen -> Ergebnisse sammeln -> Gesamtstatus melden | Command, Pipeline, Result Object | Kein eigener JUnit-Test; verifiziert STATUS=OK für alle sieben APIs zur Laufzeit und bricht mit Fehler ab, falls eine abweicht. |
Ausbaustufe 1 (minimal lauffähig): 26 JUnit-Tests über 9 vormals leere Submodule. Ausbaustufe 2 (fachlich ausgearbeitet): 37 weitere JUnit-Tests durch die neue Domain-/Application-Schicht in allen sieben Fachdomänen plus dem gemeinsamen Repository-Port — macht 66 Tests insgesamt für dieses Modul (29 aus Ausbaustufe 1 inkl. der bereits vorhandenen ApplicationLifecycleTest, plus 37 neue). Verifiziert mit mvn test (alle grün) und dem End-to-End-Smoke-Lauf mvn -pl runnable-smoke -am package (STATUS=OK für alle sieben Runtime-APIs). Der äußere RuntimeRequest/RuntimeResponse-Contract und alle Tests aus Ausbaustufe 1 blieben dabei unverändert bestehen.