Domain-Modell

Frameworkfreie Fachobjekte, Werttypen und Zustandsübergänge.

Java 21Layered6 Use CasesOfflinefähig
APPLICATION SERVICES Register CustomerRegister ProductPlace Order Reserve InventoryAuthorize PaymentIssue Invoice FRAMEWORKFREIE DOMAIN CustomerProductOrder StockItemPaymentInvoice EntityEntity + SnapshotAggregate Root Status + LinesReservierungProvider-ErgebnisSnapshot Money · Quantity · Address · typisierte IDs · Business Events

Domain-Modell der Layered-Variante

Ziel

Das Modul layered-domain schützt fachliche Invarianten mit reinem Java 21. Es enthält keine Framework-Anmerkungen und keine technischen Persistenzdetails.

Paketstruktur

com.aydinsude.enterprise.layered.domain
├── shared
├── customer
├── catalog
├── order
├── inventory
├── payment
├── billing
└── event

Modellierungsprinzipien

  • Identitäten sind typisierte Value Objects.
  • Geld und Menge sind keine primitiven Parameter.
  • Order ist die Konsistenzgrenze für Bestellpositionen und Statuswechsel.
  • Produktdaten werden beim Bestellen als Snapshot übernommen.
  • Invoice ist nach Ausstellung unveränderlich.
  • Domain Events sind typisiert, ihre Zustellung bleibt ein Port der Anwendungsschicht.

Implementierte Zustandsübergänge

Objekt Ausgang Operation Ziel
Order PLACED Bestand vollständig reserviert INVENTORY_RESERVED
Order INVENTORY_RESERVED Zahlung autorisiert PAYMENT_AUTHORIZED
Order INVENTORY_RESERVED Zahlung fachlich abgelehnt PAYMENT_FAILED
Customer ACTIVE suspend SUSPENDED
Customer SUSPENDED activate ACTIVE
Product ACTIVE deactivate INACTIVE

Schutz vor Primitive Obsession

Customer.Id, Product.Id, Order.Id, Payment.Id, Invoice.Id, Money, Quantity, Address, Sku, Email und IdempotencyKey verhindern, dass fachlich unterschiedliche Werte versehentlich vertauscht werden.

Darstellung

Design
Text
Dichte
⌂ Cockpit