Мы используем источники событий в нашем приложении, а также строго следим за тем, кто инициировал изменения во многих наших объектах. В настоящее время мы имеем код, как этотДоступ к сеансу в объекте домена
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));
}
Я лично предпочитаю позже сигнатуру метода, как швы более естественно, с другой стороны, он чувствует себя немного грязный, чтобы получить доступ к SessionContext внутри объекта домена.
Итак, как вы лучше всего обрабатываете данные сеанса, подобные этому в приложениях DDD/CQRS?. Достаточно ли получить доступ к SessionContext в объектах Domain или использовать другие методы, такие как обогащение событий, чтобы добавить эту информацию к событиям, выпущенным из домена?.