У меня Приложение Агрегат , он может обрабатывать команд как Регистрация , Установить , Удалить , Скрыть , Показать , ChangeOwner , Опубликовать , Отменить публикацию ... существует около20 команды в Приложение агрегат .Каждая команда проверяет инварианты Приложение , например Приложение может быть:
- Опубликовано когда имя, описаниеи другие данные действительны,
- Скрыто только тогда, когда Опубликовано ,
- Установлено не владельцем и после, когда оноis Опубликовано ,
- PublicationCanceled когда нет установок ...
Приложение генерирует соответствующие события , когда команды действительны. События обрабатываются проекциями и менеджерами процессов .
У меня Приложение и Статистика проекция - они обрабатывают события из приложения агрегат , обе проекции на 100% основаны на событиях , так что проекции можно полностью удалить и восстановить с нуля. Приложение и Статистика Прогнозы запрашиваются пользователями через http: получить конечную точку
Проблема :
Теперь у меня есть запрос от бизнес-аналитики проследить, когда Приложение является Открыто потенциальным клиентом.К открытию они понимают, что потенциальный клиент видит Заявление Проекция Детали, такие как (название, описание, цена, характеристика, преимущества, количество установок, обзоры ...),
Теперь мне интересно, разрешено ли мне создавать Открыть команду в Приложении агрегат .Он не изменит состояние aggregate , инварианты для него не важны.Эта команда необходима только из-за статистики прогнозы .
Дополнительная проблема заключается в том, что некоторые Приложения могут посещаться сотни раз в день, поэтому они могутгенерировать огромное количество событий для обработки, когда агрегат загружается в память.
Считаете ли вы, что создание Open команда в приложении агрегат для генерации открытое событие хороший способ решить эту проблему?