completeIfActive method

  1. @override
Future<bool> completeIfActive(
  1. String runId,
  2. Object? result
)
override

Completes an active run without replacing a prior terminal outcome.

Implementation

@override
Future<bool> completeIfActive(String runId, Object? result) async {
  final state = _runs[runId];
  if (state == null || state.isTerminal) return false;
  _removeWatcherForRun(runId);
  _runs[runId] = state.copyWith(
    status: WorkflowStatus.completed,
    result: result,
    resumeAt: null,
    waitTopic: null,
    suspensionData: const <String, Object?>{},
    ownerId: null,
    leaseExpiresAt: null,
    updatedAt: _clock.now(),
  );
  for (final entry in _due.values) {
    entry.remove(runId);
  }
  return true;
}