Инвентаризация с источником событий - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь переписать систему инвентаризации на основе CRUD с использованием источников событий / CQRS.

Проблема, с которой я сталкиваюсь, заключается в том, как вести учет инвентаризации.Идея заключается в том, что магазин иногда захочет подсчитать свой инвентарь и определить, есть ли какое-либо сокращение (либо предметы, которые, по нашему мнению, были проданы, но все еще находятся в инвентаре, либо предметы, которые, по нашему мнению, находились в инвентаре, но не могут быть найдены в магазине).

В системе CRUD, когда кто-то начинает подсчет, система создает список всех доступных запасов в таблице, называемой «ожидания», и, когда сканируется каждый элемент инвентаря, он в основном отмечает этот элемент в списке ожиданий.Сжатие заключается в том, что разница в том, что не было отсканировано в списке ожиданий, или в том, что не было в списке ожиданий.

Проблема в том, что я не могу понять, как представить это в ES.Если моя единственная сущность - «инвентарь», как я могу определить, когда подсчет был начат или завершен?

Даже любые примеры систем инвентаризации ES / CQRS, на которые я мог бы обратить внимание, были бы полезны

Любая помощь, высоко оцененная.

1 Ответ

0 голосов
/ 11 сентября 2018

В системе CRUD, когда кто-то запускается ...

Слово «старт» - это большой намек - оно предлагает процесс , который будет иметь свойсобственную бухгалтерию.

Другая вещь, на которую следует обратить внимание, заключается в том, что - помимо представления модели предметной области о том, какой «инвентарь» должен присутствовать - в значительной степени все данные поступают из реального мира.Какой-то человек решает, когда должен начинаться аудит, когда заканчивается аудит, какие части инвентаря учитываются.

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

Обратите внимание, что данные являются копией изинвентарь;точно так же, как текущий процесс копирует материал, который вы хотите, в новую таблицу для работы.Это оказывается действительно важным, когда появляются проблемы, такие как автономия.

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

Итак, вы говорите, что нормально иметь агрегатные корни, которые не представляют реальную "вещь"

Да, хотя более полезная идея заключается в том, что экземпляры бизнес-процессов* реальная вещь.

Если хотите, подумайте о журнале / журнале / документе, который отслеживает выполняемую работу, как о "вещи".

...