Část 05 z 16 · Den 1 · agregát, optimistic concurrency

Souběžné změny jedné žádosti

Problém a zkušenost

Kdo změnil žádost a smí to?

Pravidlo „splátka nejvýš 45 % příjmu“ musí platit i tehdy, když žádost mění dva poradci najednou.

  1. Poradce Anačetl v5
  2. Poradce Bnačetl v5
  3. Žádostoba zapíší
  4. Pravidlo porušenolimit splátky

Zkušenost z praxeJak u vás dnes zjistíte, kdo a kdy změnil klíčovou hodnotu žádosti?

TakeawayPravidla žádosti potřebují jedno místo a jasnou verzi, nad kterou se rozhoduje.

Více k tématu

Co to znamená

Modul Application drží pravidla žádosti (limity, povinná pole) a rozhoduje o změnách.

Proč to používáme

Pravidla na jednom místě se testují snadno a neobejdou je jednotlivé obrazovky.

Kdy to dává smysl

Vždy, když pravidla závisí na aktuálním stavu žádosti.

Kde se to láme

  • Pravidlo hlídané jen ve formuláři.
  • Rozhodnutí nad zastaralým stavem.
  • Chybějící stopa po změně.

Představme si

Poradce B dokončí výpočet nad starou cenou. Bez kontroly verze vznikne uzavřený výpočet, který překračuje limit splátky.

Pravidlo je jen tak silné, jak spolehlivě ho hlídá jedno místo.

Princip, aplikace a cvičení

Application ukládá tabulkou, nebo událostmi

Modul Application drží pravidla žádosti. Jak ukládá stav, je volba. EDA Event Sourcing nevyžaduje.

Možnost A: tabulka s verzí

  1. Příkaz
  2. Applicationpravidla + verze
  3. ŘádekexpectedVersion
  4. Událostpo zápisu

Možnost B: Event Sourcing

  1. Příkaz
  2. Applicationpravidla
  3. Stream událostíjen přidává
  4. Stavfold(events)

Trade-offEvent Sourcing dá úplnou historii a replay, ale stojí verzování událostí, projekce a návyky týmu. Pro mnoho modulů stačí tabulka s verzí.

TakeawayEvent Sourcing je volba modulu Application, ne podmínka EDA.

Více k tématu

Co to znamená

Event Sourcing ukládá posloupnost událostí a stav z nich skládá. Alternativou je tabulka s číslem verze, kde zápis nad zastaralou verzí selže (optimistic concurrency).

Proč to používáme

Historie, audit a možnost odvodit nový pohled jsou užitečné jen tam, kde je opravdu potřebujeme.

Kdy to dává smysl

Event Sourcing tam, kde záleží na tom, co se stalo a proč (finance, spory, audit). Tabulka s verzí tam, kde stačí poslední stav.

Kde se to láme

  • Event Sourcing všude „pro jistotu“.
  • Události s vypočtenými hodnotami pro UI místo faktů.
  • Prosté opakování zápisu po konfliktu bez nového rozhodnutí.

Představme si

Šest událostí kalkulace: CalculationCreated, IncomeChanged, PropertyPriceChanged, RateChanged, TermChanged, CalculationCompleted. Pravidlo limitu splátky drží agregát.

Systém si pamatuje jen to, co jsme se rozhodli zapsat, a nemusí si to pamatovat všude.

Školení pro váš tým

Chcete školení pro svůj tým?

Školení vedeme na vašem kódu a vašem doménovém problému. Domluvíme rozsah, termín a formu.

Probrat školení