Рецепты

Работа с существующими 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, когда выполняющаяся операция владеет ресурсом.

ARKTELOS

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