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

19 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта