Как правильно описать бизнес процесс (ddd)?

135
20 ноября 2019, 18:10

Есть бизнес, в котором пользователь, зарегистрировавшись (используя почту и пароль) может получить консультацию специалиста в неком чате.

После этого он может придти (а может не придти) уже ногами в офисы и заключить договор (который уже включает другие данные - паспортные и т.д.). Пользователь может так же просто сразу придти в офис и заключить договор.

Как разделить это всё?

User(Email email, Email password) can go to Office (Email email, Email password, Passport: passport) and Get() any Services()

Пользователь - это Entity, ok.

У него есть идентификатор, его можно зарегистрировать и прочее. А вот когда он приходит в офис, чтобы заключить договор - это еще одна сущность Client() или нет? Или это тот же User просто без "паспортной" части? И где должна находится валидация этого? в Email, Name, Passport как в Value-Object или, если это разные сущности, должен быть какой то сервис выделен, к которому я обращаюсь из Value object?

Answer 1

Например, можно ввести роли. Если человек только зарегистрировался то Role.USER, дошел до офиса, то уже Role.CLIENT, логично было бы работать с одной Entity и все поля в ней держать

Answer 2

То что вы описали, мы разделили логику на следующие сущности.
Заинтересованный пользователь, это Leed (Лид) который интересуется услугами компаниями.
После его регистрации, данный Лид может конвертироваться уже в другую сущность, например в Client.

Таким образом, у нас в базе нет избыточной информации плюс в коде нет множества блоков IF для определения кто это, клиент с полными данными, или же лид

READ ALSO
Плагин на C++ который запускает код на Java

Плагин на C++ который запускает код на Java

Есть известная игра CS:GO в которой можно хостить свои сервера и добавлять на них плагиныЭти плагины пишутся на C++ (plugin wiki), существует даже проект...

117
Сравнение ключей двух JSON

Сравнение ключей двух JSON

Прошу помочь с такой задачейИмеется json1, который является телом запроса к апи: {"key1":"value1","key2":"value2","key3":"value3"} и json2, являющийся телом ответа: {"key0":"value0","key1":"value1","key2":"value2","key3":"value3","key4":"value4"}

131
Установить фон кнопки [дубликат]

Установить фон кнопки [дубликат]

На данный вопрос уже ответили:

134
Установить фон кнопке в виде xml файла

Установить фон кнопке в виде xml файла

Подскажите пожалуйста как мне можно присвоить фон кнопке фон в виде xml файла

119