И причем здесь доктрина?

17 ответов

17 просмотров

ну сущность, она же в доменном слое она ведь может юзать нижележащие сервисы какие-нибудь, верно? мы такие рич модел придерживаемся, но не можем в методе сущности дернуть какой-то сервис, мы же в доктриновскую сущность не можем инжектить

еще пример, более конкретный у сущности (которая корневой агрегат) есть статусы, есть определенное действие, которое переводит в след статус, при условии что некоторые ее агрегаты в таком то состоянии.. как проверять эти агрегаты? передавать в метод репозитории, чтоб корневой агрегат достал эти агрегаты и проверил? там нет доктриновских one2many, у агрегата просто есть айдишник его агрегата

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

в сущность кидать логику плохая идея, вся работа с логикой и сервисами возлогают на контроллеры

это доменная логика, уже точно не в контроллеры)

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

ну на те же сервисы, события, куда хош

тогда будет не rich.. понятное дело, не получится все доменную логику сосредоточить в агрегате а зачем тогда rich model вообще нужен? ну лично в моем случае

𝔏𝔦𝔩𝔦𝔱𝔥- Автор вопроса

если ты начал пилить в рич, то у тебя все должно быть в рич, нужно как-то придерживаться единого стиля, имхо

rich модел это не только состояние (как в анемик), но еще и поведение в том же месте где и состояние, за счет этого контроль над состоянием не размазан по всему приложению ровным слоем (если все владеют состоянием, то им не владеет никто), а лежит мирно в одном месте.

ну вот сущность имеет состояние, вот ее поведение пытаюсь запихнуть туда же) вроде правильно корневому агрегату нужно проверить свои агрегаты? при условии что агрегаты у нас доктриновские сущности, связи типа many2one и пр. - нет, агрегат имеет ссылку на свой корень корневой агрегат должен вытащить свои агрегаты, с помощью реп

Зачем ему проверять свои агрегаты? Они сами могут проверить себя. Инкапсуляция же.

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

А, ну это проверка консистентности между агрегатами. Проверять тоже не надо. Верхний агрегат просто не позволит сделать так, что внутренние будут в разногласии. Тогда и проверять не придется

спасибо) навело на правильные мысли

Дмитрий Ткаченко
А, ну это проверка консистентности между агрегатам...

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

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

сорри если надоедаю, но еще такой вопрос) и сорян что привожу пример с доками, но так думаю нагляднее будет есть документы, счета-фактуры и накладные, а есть такая штука как упд (эдакий контейнер для накладных и счетов-фактур, может включать в себя несколько и тех и других) получается, УПД - корневой агрегат, а счета-фактуры и накладные - его агрегаты прежде чем смогу совершить действие над корневым агрегатом, я должен перевести все его агрегаты в определенное состояние, делать это буду через корневой агрегат, тут все ок, просто/понятно НО счета-фактуры и накладные могут быть самостоятельными, хочется иметь возможность их юзать в т.ч. отдельно это разные контексты? та же счет-фактура у меня будет в двух видах, как корневой агрегат и как обычный? грубо говоря, в проекте это будет 2 разных сущности одного и того же, просто в зависимости от задачи юзаем то что нам надо? но ведь сущности идентичные, только лишь использование разное

А упд не может быть просто уникальным номером, который объединит эти доки в случае когда надо?

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
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
Карта сайта