アプリでイベント ソーシングを使用しており、多くのオブジェクトへの変更を開始したユーザーを追跡する必要があります。現在、このようなコードがあります
class Order {
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
:
}
私たちのメソッドのほとんどはこのようなものであり、それらはすべてこのように呼び出されます
setNameBy("a new name", SessionContext.currentUser)
ドメインオブジェクト内の SessionContext へのアクセスを検討しています。すなわち:
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
になる
setName(newname) {
applyChange(new OrderRenamed(SessionContext.currenUser.id, newname));
}
個人的には、後者のメソッド シグネチャの方がより自然に見えるので好みです。一方、Domain オブジェクト内の SessionContext にアクセスするのは少し面倒に感じます。
では、DDD/CQRS アプリでこのようなセッション データを処理するにはどうすればよいでしょうか? ドメイン オブジェクトの SessionContext にアクセスしても問題ありませんか、それともイベント エンリッチメントなどの他の方法を使用して、ドメインから発行されたイベントにこの情報を追加する必要がありますか?