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.
ModulAufgabeAblaufPatternTests
api-contractsGemeinsame Ein-/Ausgabe-Contracts (RuntimeRequest, RuntimeResponse) für alle Runtime-Anwendungen dieses Masters.Eingang validieren (businessKey/amount) -> Contract bereitstellenValue ObjectRuntimeRequestTest (2): lehnt leeren businessKey ab, defaultet fehlenden amount/attributes.
runtime-commonAbstractRuntimeFacade (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 meldenTemplate Method, Facade, Port/AdapterAbstractRuntimeFacadeTest (3), InMemoryAggregateRepositoryTest (2): Speichern/Finden, unbekannter Key liefert leeres Optional.
app-insurance-runtimePolicy-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 speichernAggregate, Application Service, Inbound AdapterPolicyTest (3), PolicyUnderwritingServiceTest (2), InsuranceRuntimeFacadeTest (3).
app-banking-runtimeLedgerEntry-Aggregat + DebitService + BankingRuntimeFacade: eine Buchung darf den verfügbaren Saldo (1.000,00) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterLedgerEntryTest (3), DebitServiceTest (2), BankingRuntimeFacadeTest (3).
app-healthcare-runtimePatientVisit-Aggregat + CopayService + HealthcareRuntimeFacade: der Selbstbehalt darf die Obergrenze (500,00) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterPatientVisitTest (3), CopayServiceTest (2), HealthcareRuntimeFacadeTest (3).
app-erp-runtimeInvoice-Aggregat + InvoiceApprovalService + ErpRuntimeFacade: eine Rechnung darf die Freigabeschwelle (250.000) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterInvoiceTest (3), InvoiceApprovalServiceTest (2), ErpRuntimeFacadeTest (3).
app-telecom-runtimeProvisioningRequest-Aggregat + ProvisioningService + TelecomRuntimeFacade: angeforderte Leitungen dürfen die Kapazitätsgrenze (1.000) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterProvisioningRequestTest (3), ProvisioningServiceTest (2), TelecomRuntimeFacadeTest (3).
app-logistics-runtimeShipment-Aggregat + ShipmentDispatchService + LogisticsRuntimeFacade: das Sendungsgewicht darf das Limit (20.000 kg) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterShipmentTest (3), ShipmentDispatchServiceTest (2), LogisticsRuntimeFacadeTest (3).
app-legacy-migration-runtimeMigrationBatch-Aggregat + MigrationBatchService + LegacyMigrationRuntimeFacade: eine Migrationscharge darf die Batchgrenze (5.000 Datensätze) nicht überschreiten.Facade -> Use-Case -> Domain-Invariante prüfen -> Repository-Port speichernAggregate, Application Service, Inbound AdapterMigrationBatchTest (3), MigrationBatchServiceTest (2), LegacyMigrationRuntimeFacadeTest (3).
enterprise-reference-sliceFramework-neutrale Referenz für einen vollständigen Runtime-Lebenszyklus (Start/Health/Stop).Konfigurieren -> Starten -> Health-Check -> Sicher stoppenCommand, Result ObjectApplicationLifecycleTest (bereits vorhanden, 3).
runnable-smokeVerdrahtet 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 meldenCommand, Pipeline, Result ObjectKein 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.

⌂ Cockpit