예제 #1
0
 static public StepData SetSucceeded(this StepData data, SagaExecutionState state, IDateTimeProvider dateTimeProvider)
 {
     if (state.IsResuming)
     {
         data.ResumeData.SucceedTime = dateTimeProvider.Now;
     }
     else if (state.IsCompensating)
     {
         data.CompensationData.SucceedTime = dateTimeProvider.Now;
     }
     else
     {
         data.ExecutionData.SucceedTime = dateTimeProvider.Now;
     }
     return(data);
 }
예제 #2
0
 static public StepData SetFailed(this StepData data, SagaExecutionState state, IDateTimeProvider dateTimeProvider, Exception error)
 {
     if (state.IsResuming)
     {
         data.ResumeData.Error    = error.ToSagaStepException();
         data.ResumeData.FailTime = dateTimeProvider.Now;
     }
     else if (state.IsCompensating)
     {
         data.CompensationData.Error    = error.ToSagaStepException();
         data.CompensationData.FailTime = dateTimeProvider.Now;
     }
     else
     {
         data.ExecutionData.Error    = error.ToSagaStepException();
         data.ExecutionData.FailTime = dateTimeProvider.Now;
     }
     return(data);
 }
예제 #3
0
 internal static bool HasSucceeded(this StepData data)
 {
     return(data.ExecutionData?.SucceedTime != null);
 }
예제 #4
0
 static internal StepData SetEndStateName(this StepData data, string currentState)
 {
     data.EndStateName = currentState;
     return(data);
 }
예제 #5
0
 static internal StepData SetNextStepName(this StepData data, string stepName)
 {
     data.NextStepName = stepName;
     return(data);
 }