我们在我们的应用程序中使用事件溯源,并且严格需要跟踪对我们的许多对象发起更改的用户。目前我们有这样的代码
class Order {
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
:
}
由于我们的大多数方法都是这样的,而且所有的方法都是这样调用的
setNameBy("a new name", SessionContext.currentUser)
我们正在考虑访问域对象内的 SessionContext。IE:
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
变成
setName(newname) {
applyChange(new OrderRenamed(SessionContext.currenUser.id, newname));
}
我个人更喜欢后面的方法签名,因为它接缝更自然,另一方面,访问 Domain 对象内的 SessionContext 感觉有点混乱。
那么如何在 DDD/CQRS 应用程序中最好地处理这样的会话数据?是否可以访问域对象中的 SessionContext 或者我应该使用其他方法(如事件丰富)将此信息添加到从域发出的事件中?