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