同じコンテキストの集約間の整合性
TL;DR;
1 つのトランザクションで複数の集約を更新するケースもある
典型例: 2 つの口座間の送金
hr.icon
複数の集約が同じ境界づけられたコンテキストにあったとしても、メッセージ と 結果整合性 を利用すべき 「1 つのトランザクションで複数の集約を更新する」のが良いケースもある
ワークフロー が 1 つのトランザクションであると考えられるケース 典型例: 2 つの口座間の送金
code:text
Start transaction
Add X amount to accountA
Remove X amount to accountB
Commit transaction
口座が Account 集約で表されている場合、同じトランザクションで 2 つの集約を処理することに
つまりトランザクションが エンティティ radish-miyazaki.icon code:fsharp
type MoneyTransfer = {
Id: MoneyTransferId
ToAccount: AccountId
FromAccount: AccountId
Amount: Money
}