Consistency
Integrityより少し広い範囲を見て、別々の概念を表すAとBの関係に一貫性が保たれているか Consistencyを保つのは設計に大きな負担をかける
重要ではあるが、厳格にしすぎると身動きが取りづらくなる
例
Orderの持つ合計値は、それが含むOrderLineの合計値と一致している
Orderの状態がPlaced(注文済み)になっているなら、Invoiceは生成済みである
割引券が使用済みなら、そのコードは使用済みであるとマークされている
『Domain Modeling Made Functional』.iconでは4つのパターンにわけてConsistencyの保ち方を説明している
同期的にConsistencyを保つが、Aggregateがそもそもそういうものなので比較的簡単
同期的に保つことを妥協することも考慮に入れる
非同期的であってもEventual Consistencyを保っていれば良いと考える
文脈に依って上2つのいずれかを選択する
新しいEntityを作ることも考慮に入れてみる
同じデータを複数のAggreageが扱う際のConsistency
関数型なら余裕
同じvalidation関数を個々のAggreagateで使えばよいだけ
Integrityとの違いが微妙にわからないが、今のところ以下のように理解しているmrsekut.icon を、満たしていること
Consistencyは、ビジネス上のルールで、満たしていることが望ましいが、満たすまでのタイミングが少しズレていても許容できる条件
を、満たしていること
多分違う気もするけど、よくわからんmrsekut.icon
あるいは、ConsistencyはBounded Contextをまたいでいる前提?
いやそんなことはないか
またぐこともあるが、またがないこともある
参考