Во всех примерах CQRS, которые я видел, события домена запускают обновления для модели чтения, но ничего больше. Но как насчет того, когда вы хотите, чтобы событие домена вызывало другие изменения в домене?События домена, которые вызывают другие изменения домена в CQRS
Например, предположим, что у вас есть следующие требования:
- когда кнопка «закрыть счет» щелкают, закрыть счет
- когда счет выплачиваются, закрыть счет
- когда счет закрыт, отметьте владельца учетной записи как «специального»
Как лучше всего справиться с этим?
- Сделать Account.Close() создать событие AccountClosed и также отметить владельца как «специальный»
- сделать обработчик AccountClosed, который отмечает владелец, как «специальный»
- сделать обработчик AccountClosed что подать команду MarkOwnerAsSpecial
- Выполните команду обработчиков, которые закрывают счета также отмечающие владельца счета, как «специальный»
Я читал это раньше, но это было настолько абстрактно, что я не понял, как саги в основном превращают события в команды. Я нашел еще 2 статьи, которые объясняют это и имеют образцы кода. http://blog.jonathanoliver.com/2010/09/cqrs-sagas-with-event-sourcing-part-i-of-ii/ –
@TrystanSpangler Эта ссылка дает 404 и, похоже, была перенесена на http://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-i-of-ii/ – Melle