public ISaga Continue(Guid id) { var saga = _librarian.Get(id); saga.Continue(); return(saga); }
public SagaConclusion Conclude(Guid sagaId) { var saga = _sagaLibrarian.Get(sagaId); var conclusion = _sagaNarrator.Conclude(saga); return(conclusion); }
public IEnumerable <CommandResult> HandleForSaga(Guid sagaId, CommandDescriptor[] commandDescriptors) { var results = new List <CommandResult>(); var saga = _sagaLibrarian.Get(sagaId); // Todo : IMPORTANT : We need to treat this as a unit of work with rollbacks if one or more commands fail and some succeed!!!!!!!!!!! foreach (var commandDescriptor in commandDescriptors) { ICommand commandInstance = null; try { commandInstance = GetCommandFromDescriptor(commandDescriptor); results.Add(_commandCoordinator.Handle(saga, commandInstance)); } catch (Exception ex) { var commandResult = CommandResult.ForCommand(commandInstance); commandResult.Exception = ex; return(new[] { commandResult }); } } return(results.ToArray()); }