public FailureProcessingResult ProcessFailures(FailuresAccessor data) { switch (data.GetSeverity()) { case FailureSeverity.Warning: data.ResolveFailures(data.GetFailureMessages()); return(FailureProcessingResult.ProceedWithCommit); default: return(FailureProcessingResult.ProceedWithRollBack); } }
private void OnFailuresProcessing(object sender, FailuresProcessingEventArgs e) { FailuresAccessor failuresAccessor = e.GetFailuresAccessor(); //string transactionName = failuresAccessor.GetTransactionName(); IList <FailureMessageAccessor> fmas = failuresAccessor.GetFailureMessages(); if (fmas.Count > 0) { List <FailureMessageInfo> failureMessageInfoList = new List <FailureMessageInfo>(); foreach (FailureMessageAccessor fma in fmas) { FailureMessageInfo messageInfo = new FailureMessageInfo(); try { messageInfo.ErrorMessage = fma.GetDescriptionText(); messageInfo.ErrorSeverity = fma.GetSeverity().ToString(); messageInfo.FailingElementIds = fma.GetFailingElementIds().ToList(); } catch { messageInfo.ErrorMessage = "Unknown Error"; } failureMessageInfoList.Add(messageInfo); //add log message FailureDefinitionId definitionId = fma.GetFailureDefinitionId(); Guid defGuid = definitionId.Guid; if (!FailureDefinitionIds.Contains(defGuid)) { LogFileManager.AppendLog(messageInfo); FailureDefinitionIds.Add(defGuid); } if (FailureSeverity.Warning == fma.GetSeverity()) { failuresAccessor.DeleteWarning(fma); } else if (FailureSeverity.Error == fma.GetSeverity()) { e.SetProcessingResult(FailureProcessingResult.ProceedWithRollBack); return; } } if (failuresAccessor.IsFailureResolutionPermitted()) { failuresAccessor.ResolveFailures(fmas); } e.SetProcessingResult(FailureProcessingResult.ProceedWithCommit); return; } e.SetProcessingResult(FailureProcessingResult.Continue); }