Рецепты
Работа с существующими Execution
Разрешайте совместную работу, перезапускайте или отклоняйте связанные активные Execution.
v0.1.0-dev.2Средний уровеньusecase_forge
Работа с существующими Execution
UseCaseExistingExecutionPolicy применяется на стадии обработки и сравнивает новую Execution Entry со связанными активными Execution.
| Политика | Эффект |
|---|---|
coexist | сохраняет активную работу, а новую запись запускает или ставит в очередь согласно режиму Execution |
restart | запрашивает отмену связанной работы, ждёт её завершения и запускает новую запись |
rejectNew | сохраняет активную работу и отклоняет новую запись с причиной activeConflict |
dart
registerCommand<SynchronizeDocument>(
_synchronize,
instructions: const UseCaseInstructionOverrides(
processing: UseCaseProcessingInstructionOverrides(
existingExecutionPolicy: UseCaseExistingExecutionPolicy.rejectNew,
),
),
);
Для restart и rejectNew требуется executionKey. Отмена кооперативна: обработчик должен ожидать отменяемые операции или проверять сигнал контекста. Отклонение до начала обработки не попадает в историю; перезапущенный активный Execution завершается с результатом cancelled и сохраняется в ней.
Используйте coexist для независимого пересечения, restart, когда актуален только последний результат, и rejectNew, когда выполняющаяся операция владеет ресурсом.