Изредка подключаемая система CQRS
Проблема:
Два сотрудника (A & B) выходят в автономный режим одновременно, редактируя клиента № 123, скажем, версию № 20, и в то время как автономный режим продолжают вносить изменения ...
Сценарии:
1 - Два сотрудника редактируют клиента № 123 и вносят изменения в один или несколько идентичных атрибутов.
2 - Два сотрудника редактируют клиента № 123, но НЕ вносят одинаковые изменения (они пересекаются, не касаясь друг друга).
... они оба возвращаются в оперативный режим, первый сотрудник A добавляет, тем самым изменяя клиента на версию # 21, затем сотрудник B, все еще на версии # 20
Вопросы:
Какие изменения мы оставляем в сценарии 1?
Можем ли мы сделать слияние в сценарии 2, как?
Контекст:
1 - CQRS + система стилей источников событий
2 - Использование Event Sourcing Db в качестве очереди
3 - Возможная последовательность на модели чтения
4 - RESTful API
РЕДАКТИРОВАТЬ-1: Разъяснения, основанные на ответах до сих пор:
Чтобы выполнить мелкозернистое объединение, мне нужно иметь одну команду для каждого поля в форме, например?
Выше, мелкозернистые команды для ChangeName, ChangeSupplier, ChangeDescription и т. Д., Каждая из которых имеет свою собственную временную метку, позволит автоматически объединить в событии A & B оба измененных ChangedName?
Редактирование-2: Отслеживание на основе использования определенного хранилища событий:
Кажется, что я буду использовать @GetEventStore для сохранения своих потоков событий.
Они используют оптимистический параллелизм следующим образом:
Каждое событие в потоке увеличивает версию потока на 1
Операторы записи могут указывать ожидаемую версию, используя заголовок ES-ExpectedVersion на устройствах записи.
-1 указывает, что поток не должен существовать
0 и выше указывает версию потока
Запись не будет выполнена, если поток не соответствует версии, либо вы повторите попытку с новым ожидаемым номером версии, либо повторно обработали поведение и решили, что все в порядке, если вы того пожелаете.
Если не указана ожидаемая версия ES, оптимистическое управление параллелизмом отключено
В этом контексте оптимистический параллелизм основан не только на идентификаторе сообщения, но и на событии #