Domain driven design DDD-作为不变量一部分的具有大关系的聚合

Domain driven design DDD-作为不变量一部分的具有大关系的聚合,domain-driven-design,Domain Driven Design,假设我有两个模型 项目和任务 一个项目可以有多个任务,但一个项目在任何时候都只能有一个状态为“进行中”的任务 据我所知,这通常作为根聚合的域不变量的一部分处理 然而,在这种情况下,与项目相关联的任务列表可能是无限的,因此我认为它不太适合,但同时项目应该控制和维护前面提到的不变量 关于如何最好地对此建模,您有什么建议吗?听起来您在项目和任务之间有一种关系,应该是1对1 project inProgress task 您的约束条件是,这种关系对于每个项目都应该是唯一的 这反过来又表明,您的项目AP

假设我有两个模型

项目
任务

一个项目可以有多个任务,但一个项目在任何时候都只能有一个状态为“进行中”的任务

据我所知,这通常作为根聚合的域不变量的一部分处理

然而,在这种情况下,与项目相关联的任务列表可能是无限的,因此我认为它不太适合,但同时项目应该控制和维护前面提到的不变量

关于如何最好地对此建模,您有什么建议吗?

听起来您在项目和任务之间有一种关系,应该是1对1

project inProgress task
您的约束条件是,这种关系对于每个项目都应该是唯一的

这反过来又表明,您的项目API包含以下成员

TaskId currentTask()
void changeTasks(TaskId nextTask)