Slide 5
Slide 5 text
events + lastEventId
state
newEvents
なし→
保存
あり→
リトライ
Event Store
イベントID: ...590, 591, 592
Query
必要最⼩限のイベントを取得
lastEventId = 592
を記憶
Projection
イベントから状態を再構築
Validation
ビジネスルール検証
OK →
新イベント作成
Conditional Append
整合性チェック
592
の後に新イベントはない?
Event Store
新イベント保存 → 593
DCB の処理フロー
イベントタイプやタグによって絞り込んだ必要最小
限のイベントだけを読み込む (動的なクエリ)
例: コース名が変更されたイベントは、
コースが満員かどうかの判断には不要
プロジェクションで状態を再構築する
(Decision Model)
Decision Model でビジネスルールによる検証を行う
取得している最後のイベントの後に新たにイベント
が追加されていないか確認し、なければイベントを
書き込む (整合性の確保)