CQRS Как решать задачи пользователей / Устаревшие данные - PullRequest
0 голосов
/ 13 октября 2011

Я понимаю, что данные всегда устарели.

Какой способ обработки задачи рабочего процесса, например, Утверждение счета-фактуры.Эта задача может быть выполнена пользователем один раз.Когда это обрабатывается асинхронной службой, это может занять несколько секунд (или дольше).Тем временем пользователь может снова подтвердить тот же счет, поскольку задача еще не обновлена ​​в БД.

Любые идеи по этому поводу приветствуются.

1 Ответ

1 голос
/ 13 октября 2011

Модель предметной области должна обеспечивать согласованность.Модель на стороне записи не должна считаться устаревшей, только проекции на стороне чтения.

Не имеет значения, если событие утверждения не было спроецировано в модель чтения.Но если пользователь отправляет недопустимую команду на основе устаревших данных, модель домена должна знать, что утверждение уже произошло.

Репозиторий вашего домена должен всегда получать агрегатный корень в своем позднем состоянии (независимо от того, используете ли вы источник событий или какое-либо постоянство на основе состояния в качестве базы данных SQL).

...