taktisches DDD

Ordering Aggregate

Order und OrderLine als kleine, fachlich begründete Konsistenzgrenze.

Java 21Aggregate RootOrderLine Entitykleine Grenze

Aggregate-Grenze

Die Root schützt nur Entscheidungen, die in einem atomaren Schritt konsistent sein müssen. Externe Kontexte werden nicht als Objekte oder Statusfelder hineingezogen.

Ordering AggregateOrder RootStatus · Kunde · AdresseOrderLineProdukt- und Preis-SnapshotInvarianten + Pending Domain EventsNur Root-Methoden ändern Positionen und StatusInventoryPaymentBilling / Versandaußerhalb der Konsistenzgrenze

Fachliche Oberfläche

Entwurf bearbeiten

Positionen hinzufügen, Mengen ändern und Positionen entfernen. Alle Methoden prüfen zuerst den DRAFT-Zustand.

Bestellung aufgeben

Ein nichtleerer Entwurf wechselt atomar auf PLACED und erzeugt ein OrderPlaced-Ereignis mit Summen-Snapshot.

Stornieren

Stornierung ist idempotent und beendet weitere Positionsänderungen.

Ereignisse abholen

Der spätere Application Layer erhält unveränderliche Events genau einmal über pullDomainEvents.

Java-21-Referenz

public void place(Instant occurredAt) {
  ensureDraft();
  if (lines.isEmpty()) throw new IllegalStateException("order requires at least one line");
  status = OrderStatus.PLACED;
  changed();
  register(new OrderPlaced(id, lines.size(), total(), occurredAt));
}

Darstellung

Design
Text
Dichte
⌂ Cockpit