При моделировании агрегата необходимо следовать строгим правилам, чтобы он работал как следует и выполнял поставленную перед ним задачу. Далее перечислены правила, предложенные Эриком Эвансом37.
• У каждого агрегата есть граница и корень.
• Роль корня играет одна конкретная сущность, размещенная внутри агрегата.
• Корень является единственным членом агрегата, на который могут ссылаться объекты за пределами границы. Поэтому:
• у корня есть глобальный идентификатор;
• корень управляет доступом к объектам внутри границы;
• все сущности, кроме корня, имеют локальные идентификаторы, которые могут быть неизвестны за пределами агрегата;
• корень может передавать другим объектам ссылки на внутренние сущности, но эти ссылки могут использоваться лишь временно, и их нельзя удерживать;
• корень может передавать другим объектам ссылки на объекты-значения.
• Инварианты между членами агрегата всегда соблюдаются в рамках каждой транзакции.
• Инварианты, охватывающие несколько агрегатов, не дают гарантии согласованности в любой момент, но в конечном счете они могут стать согласованными.
• Объекты внутри агрегата могут содержать ссылки на другие агрегаты.