В случае с системой источников события неизменны - простые факты того, что произошло. Переписывание истории событий - вещь, которую просто не делают [1].
Изменение логики расчета, которая выводит результат, основанный на этих событиях, абсолютно нормальная вещь (это одна из ключевых вещей, которую позволяет даже поиск источников).
Если вы действительно изменяете свой код или предоставляете альтернативный алгоритм вместе, это вопрос выбора - если оригинал был фактически ошибкой (звучит как ваш случай), измените код. Если нет, напишите новый.
В некоторых случаях (обычно не рекомендуется), каждый всегда работает с оригинальными событиями; если это так, все, что вам нужно сделать, это изменить логику деривации, и все готово.
В случае, когда вы проектируемого события и denormalised в постоянное хранилище, и решили, что ситуация представляет собой ошибку, нормальный подход заключается в следующем:
- сдуть существующие denormalised государству
- повтор событий для получения предполагаемого версии альтернативного диф ференцирование
Обратите внимание, что это приходит только в игру, если вам имеют неэфемерное денормализованное государственное хранилище, которое сохраняет значения, рассчитанные на основе теперь заменяемой. (Совершенно верно проецировать денормализованное состояние в тайник в памяти, в таком случае «выдувание» проще).
Другой сценарий - это то, где вы реализовали оптимизацию моментальных снимков - в этом случае можно было бы повторно спроектировать денормализацию по-разному.
[1] Да, есть экзотические случаи, когда это может быть оправдано, но это +0,001% случай А
К сожалению, если it'is неконструктивный вопрос, я новичок в DDD/CQRS и ES, и для меня это реальный прецедент. –