Entwurf bearbeiten
Positionen hinzufügen, Mengen ändern und Positionen entfernen. Alle Methoden prüfen zuerst den DRAFT-Zustand.
Order und OrderLine als kleine, fachlich begründete Konsistenzgrenze.
Die Root schützt nur Entscheidungen, die in einem atomaren Schritt konsistent sein müssen. Externe Kontexte werden nicht als Objekte oder Statusfelder hineingezogen.
Positionen hinzufügen, Mengen ändern und Positionen entfernen. Alle Methoden prüfen zuerst den DRAFT-Zustand.
Ein nichtleerer Entwurf wechselt atomar auf PLACED und erzeugt ein OrderPlaced-Ereignis mit Summen-Snapshot.
Stornierung ist idempotent und beendet weitere Positionsänderungen.
Der spätere Application Layer erhält unveränderliche Events genau einmal über pullDomainEvents.
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));
}