private static void CheckIfSagaIsDeleted(ISaga saga) { if (saga.HasError() && saga.ExecutionState.CurrentState == new SagaStartState().GetStateName()) { saga.ExecutionState.IsDeleted = true; } }
private async Task <ISaga> DispatchStepSync( ExecuteStepCommand command) { using (IServiceScope scope = serviceScopeFactory.CreateScope()) { ExecuteStepCommandHandler stepExecutor = ActivatorUtilities. CreateInstance <ExecuteStepCommandHandler>(scope.ServiceProvider); ISaga saga = await stepExecutor. Handle(command); if (saga == null) { await messageBus.Publish( new ExecutionEndMessage(SagaID.From(command.Saga.Data.ID))); return(null); } else { if (saga.IsIdle()) { await messageBus.Publish( new ExecutionEndMessage(SagaID.From(saga.Data.ID))); if (saga.HasError()) { throw saga.ExecutionState.CurrentError; } return(saga); } else { return(await Handle(new ExecuteActionCommand() { Async = AsyncExecution.False(), Saga = saga, Model = command.Model })); } } } }