Method RecoverCompensationAsync
RecoverCompensationAsync(WorkflowInstanceId, CompensationRecovery, CancellationToken)
Moves an unwind that a failed compensation left suspended (§11.30).
ValueTask<bool> RecoverCompensationAsync(WorkflowInstanceId id, CompensationRecovery action, CancellationToken ct = default)
Parameters
idWorkflowInstanceIdactionCompensationRecoveryctCancellationToken
Returns
Remarks
A half-undone saga is parked rather than forced to a terminal state, because it is exactly where a human should look. This is the way out, and the engine cannot choose between the three options — which is right depends on what the compensation was undoing and whether it is now safe to try again, neither of which the engine knows.
Returns false when there is nothing to recover: the instance is not suspended mid-unwind, or somebody already recovered it. That is an ordinary answer for a stale dashboard button, not a fault.