Перейти к основному содержимому

Доменный Инвариант:

Назначение

Опиши доменное правило, которое aggregate обязан сохранять всегда, включая конкуренцию, replay и partial failure.

Область Действия

ПолеЗначение
Domain<domain>
Aggregate<AggregateName>
Entity/value object<EntityName/ValueObjectName>
Сервисы<service list>
Критичность<Security/Compliance/Consistency/Operational>

Формулировка Правила

<Краткая строгая формулировка invariant-а>

Данные Правила

ПолеТипИсточникОписание
<FieldName><Type><aggregate/request/reference data><описание>

Предусловия

УсловиеОшибка
<condition><ErrorCode>

Переходы Состояний

FromToРазрешено когдаЗапрещено когда
<State><State><condition><condition>

Контроль Enforcement

МестоПравило
Domain<инвариант агрегата: guard>
Application<проверка входа, загрузка, конкуренция>
Database<constraint/index: last-resort integrity>

Конкурентность

СценарийОжидаемое поведение
Parallel commands<one commit succeeds, conflicts return typed error>
Stale version<ExpectedVersion conflict>
Replay<idempotent no-op or same result>

Побочные Эффекты

Event/AuditКогда СоздаетсяSnapshot
<event.name><valid transition><SnapshotModel>
<AuditAction><decision point><audit fields>

Тесты

ТестОжидание
Valid case<success>
Invalid precondition<typed error>
Illegal transition<typed error/no side effects>
Concurrent update<conflict/idempotent result>

Обратные ссылки

Автоссылки: где используется этот документ.