Čá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.
- Poradce Anačetl v5
- Poradce Bnačetl v5
- Žádostoba zapíší
- 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í
- Příkaz
- Applicationpravidla + verze
- ŘádekexpectedVersion
- Událostpo zápisu
Možnost B: Event Sourcing
- Příkaz
- Applicationpravidla
- Stream událostíjen přidává
- 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í →