Рецепты
Разрешение конфликтов ввода
Поставьте в очередь, замените или отклоните связанные Command до начала обработки.
v0.1.0-dev.2Средний уровеньusecase_forge
Разрешение конфликтов ввода
UseCaseInputConflictPolicy сравнивает связанные Execution Entry, которые ещё находятся в AdmissionQueue или PendingQueue. Активные Execution на этом этапе не проверяются.
| Политика | Эффект |
|---|---|
enqueue | сохраняет все связанные записи; значение по умолчанию |
replace | удаляет связанные ожидающие записи и допускает новую |
rejectNew | сохраняет ожидающие записи и отклоняет новую |
dart
registerCommand<SaveDraft>(
_save,
instructions: const UseCaseInstructionOverrides(
input: UseCaseInputInstructionOverrides(
conflictPolicy: UseCaseInputConflictPolicy.replace,
),
),
);
Для replace и rejectNew требуется executionKey; для enqueue — нет. Заменённые записи получают причину replaced, а новые отклонённые — inputConflict. Они не попадают в историю, поскольку обработка ещё не началась.
Используйте replace, если ожидающая команда быстро устаревает; rejectNew, если первая команда должна сохранить занятое место; enqueue, если важен каждый допущенный Command.