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

19 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Всем привет. Нужна платная консультация от тех, кто сталкивался с октябрём в кластере или шарит оч хорошо в цмс. Проблема следующая: после переноса в кластер октябрь начал ...
wl
8
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
а я честно сказать не понимаю - нахуя идти учиться на вышку или еще куда-либо и при этом нихуя не делать, типа зачем ? просто корку получить, а нахуй она нужна тогда ?
Eugene Неелов
7
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
зараз якщо створити файл core/custom/define.php з текстом <?php const NO_SESSION = true; можна позбутися сесійних кукі (що зручно, щоб не показувати людям банери про збір та в...
Artur Kyryliuk
1
А сколько часов мак держит зарядку в рабочем режиме? Например мой Redmi Mac (просто наклейка от айфона осталась, налепил) по началу держал часов 5 с парой открытых штормов и ...
Ross
8
я бы даже сказал не размер резюме, а слова, которые там написаны, потому что резюме может быть на несколько десятков страниц из-за 20 летнего опыта работы, но там в опыте буде...
Eugene Неелов
2
так а я не могу просто новый сделать ? я пробовал не прокатило но может чето упускаю
Максим
3
Ребят, было ли у вас так, что переменные в WebApp —tg-viewport-height, —tg-viewport-stable-height после метода expand не обновляются, а остаются в размерах, как было до expand...
Black
3
Карта сайта