А можно на конкретном примере?

19 ответов

15 просмотров
Qwert-Qwertinsky Автор вопроса

приложение моделирует процессы реального мира. если процессы поставлены криво - то это повлечет и кривую реализацию. Например: я на кассе оплачиваю покупку в магазине, сначала заказ должен быть сформирован - кассир пробивает все позиции, а потом спрашивает как я будут оплачивать. * Фактически сначала создается заказ, потом происходит процесс попытки оплаты - сам процесс попытки оплаты также можно отразить в виде объекта предметной области. * Процесс попытки оплатить - имеет свой идентификатор, имеет id заказа, и имеет свой тип(оплата налом, банковской картой, по qr коду и т.д.). * В такой ситуации будет событие - создание заказа(и там не будет ничего про способ оплаты), и будет событие инициации процесса попытки оплатить (попыток может быть несколько, например на карте не было денег, попробовал другой картой) Если процесс в реальном мире поставлен так что кассир меня сначала спросит про способ оплаты, а потом начнет пробивать позиции в заказе - то да, придется отражать это в приложение. Т.е. заказ будет содержать в себе данные о способе оплаты - и это породит много веселого, например если заказ был создан с типом оплаты - "наличка", налички не хватило, клиент начал платить картой. Что должно меняться и в какой последовательности - для меня имхо это ад и содомия. Вариант когда в реальности процесс поставлен корректно, но у разработчика не хватило компетенции отразить это в коде - это отдельный случай.

Ну с последовательностью более или менее понятно куда двигаться. Тут опять же вопрос почему тебе для способа оплаты нужен заказ? Скорее всего не нужен. Ты можешь сначала сохранить способ оплаты, а потом сделать заказ.

Qwert-Qwertinsky Автор вопроса

А что я оплачиваю? Т.е. вот есть факт оплаты, но за что именно были получены деньги?

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

Qwert-Qwertinsky Автор вопроса

так выбор способа оплаты - к чему будет относится?

скорее всего к оплате

Qwert-Qwertinsky Автор вопроса

а что это такое? какое отражение это имеет в реальном мире?

А выбор способа оплаты вообще имеет смысл без или до оплаты?

не очень понял вопрос. Способ оплаты - ну например битками или по карте. Или там по одной карте или по другой карте

Qwert-Qwertinsky Автор вопроса

А способ оплаты чего?

заказа. Прикол в том, что тебе для этого нужен только идентификатор. Если у тебя есть идентификатор заказа - значит ли это, что заказ уже существует?

Qwert-Qwertinsky Автор вопроса

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

нет, если идентификатор есть, то заказа может ещё и не быть. Что мешает создать идентификатор? Но можно наверное и то как ты описываешь это сделать. Но тогда тебе ничего не должно мешать создать заказ до выбора оплаты

Qwert-Qwertinsky Автор вопроса

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

Qwert-Qwertinsky Автор вопроса

а как может получиться что существует идентификатор сущности, но нет самой сущности? что тогда этот идентификатор идентифицирует?

ну тут уже можно подумать на тему нейминга. Может созданный заказ с одним идентификатором - это и не заказ вовсе, а сессия покупок например. Она может иметь тот же идентификатор, что и будущий заказ

ну просто вызываешь функцию создания UUID и всё

Qwert-Qwertinsky Автор вопроса

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

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

Похожие вопросы

Обсуждают сегодня

Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Ну есть у нас десяток компаний которым надо. Остальным то зачем?
Andrii Kurdiumov
4
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
9
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Всем привет, добавляю поля в админку через контроллер взависимости от id, поля отображаются, сохраняются в бд, но не редактируются в админке, кто-то сталкивался с таким?
Catherine Poll
4
Карта сайта