DDD では、いつドメイン イベントを使用すればよいのでしょうか? ドメイン イベントを使用するのに適したシチュエーションの推奨事項はありますか? 最終的に一貫性が許容される場合のみですか?
Product、Order、OrderLine を含むオンライン ストアの例で、1 つの Order に複数の OrderLine が含まれているとします。1 つの OrderLine は Product と 1 対 1 の関係にあり、注文を作成すると同時に、Product で使用可能な金額を差し引く必要があります。私が知っている2つの方法があります:
OrderService (アプリケーション サービス) では:
- 新しい注文を作成し、データベースに挿入します
- Order の各注文明細について、その OrderLine に関連付けられた Product を取得し、Product.UpdateQuantity() を呼び出します。
- すべての製品をデータベースに保存
- 注: 私には、アプリケーション サービスがここでほとんどの作業 (注文の作成、製品の取得、製品の更新) を行っているように思えますが、これは許容できますか?
OrderService:
- 新しい注文を作成し、データベースに挿入します
- イベント OrderCreated を生成する
- トリガーされたイベント ハンドラー、Product.UpdateQuantity() を呼び出す
- 注: 商品の数量はすぐに更新されるとは限りません
実生活では、どちらの方法がより好まれますか? どちらの場合も、製品数量の同時更新を処理する方法は? 数量がチェックアウト画面を表示した時間と異なる場合、ユーザーに失敗を通知しますか?
どうもありがとう