Рецепты

Разрешение конфликтов ввода

Поставьте в очередь, замените или отклоните связанные 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.

ARKTELOS

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