DDD - Агрегат с большим отношением, которое является частью инварианта - PullRequest
0 голосов
/ 10 мая 2018

скажем, у меня есть две модели

Project и Task

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

Насколько я понимаю, это обычно обрабатывается как часть инварианта домена корневого агрегата

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

Любые предложения о том, как лучше всего смоделировать это?

1 Ответ

0 голосов
/ 10 мая 2018

Похоже, у вас есть отношение между проектом и задачей, которое должно быть 1 к 1.

project inProgress task

И ваше ограничение заключается в том, что такое отношение должно быть уникальным для каждого проекта

Это, в свою очередь, предполагает, что в вашем Project API есть такие члены, как

TaskId currentTask()
void changeTasks(TaskId nextTask)
...