public object Execute(Operation operation, Operation parentOperation = null, OperationExecutionReport parentOperationReport = null) { try { OperationExecutionReport report; if (parentOperation == null) { return(ExecuteOperation(operation, out report)); } operation.ParentOpearionId = parentOperation.Id; operation.User = parentOperation.User; var result = ExecuteOperation(operation, out report); if (report != null && parentOperationReport != null) { parentOperationReport.SubReports.Add(report); } return(result); } catch (OperationExecutionException error) { throw error; } catch (Exception error) { log.Error(error); throw new OperationExecutionException(new Error(error), OperationExecutionStatus.InfrastructureErrors); } }
public override object Execute(out OperationExecutionReport executionReport) { executionReport = new OperationExecutionReport("OK"); var data = Tuple.Create(Data.Item1 * 2, Data.Item2.ToLower(), Data.Item3.AddYears(5)); var message = new NotifyMessage <Tuple <int, string, DateTime> >() { Data = data, Name = "TestWsOp" }; notifier.SendMessage(User.Id, message); return(null); }
public override ComplexDataType Execute(out OperationExecutionReport executionReport) { executionReport = new OperationExecutionReport("OK"); var result = new ComplexDataType { SomeInt = 2 * Data.SomeInt, SomeString = Data.SomeString.ToUpper(), SomeBool = !Data.SomeBool, Time = Data.Time.AddYears(1), ListData = Data.ListData.Select(t => Tuple.Create(t.Item1 - 1, t.Item2.ToLower(), !t.Item3)).ToList() }; return(result); }
public override List <int> Execute(out OperationExecutionReport executionReport) { var report = executionReport = new OperationExecutionReport(); var result = Data.Select(item => { var dataItemOperation = new ChilderTypesData() { Data = item }; return(executor.Execute(dataItemOperation, this, report)); }).ToList(); return(result); }
public override int Execute(out OperationExecutionReport executionReport) { if (Data < 0) { throw new ArgumentException("Data < 0"); } executionReport = new OperationExecutionReport("Partial Complite"); if (Data > 0) { throw new ArgumentException("Data > 0"); } executionReport.ReportStrings[0] = "Full Complite"; return(0); }
private static OperationExecutionReport ExecuteCommand(Command command, ICommandReceiver receiver) { OperationExecutionReport report; try { report = (OperationExecutionReport)((dynamic)receiver).OnReceive((dynamic)command); } catch (Exception e) { report = new OperationExecutionReport("Ошибка при обработке команды"); report.Errors.Add(new Error(e)); } return(report); }
public override int Execute(out OperationExecutionReport executionReport) { executionReport = new OperationExecutionReport(); var type1 = Data as ChildType1; if (type1 != null) { return(type1.Field1 + type1.Field2); } var type2 = Data as ChildType2; if (type2 != null) { return(type2.Field1 - type2.Field2); } return(Data.Field1); }
public override int Execute(out OperationExecutionReport executionReport) { executionReport = new OperationExecutionReport("OK"); return(this.Data); }
private object ExecuteOperation(Operation operation, out OperationExecutionReport report) { log.Info($"Begin execution of {operation.Name} {operation.Id}"); var histItem = new OperationsHistoryItem(operation); List <Error> errors; histItem.InvokedTime = DateTime.Now; try { errors = operation.GetPermissionsValidationErrors(); } catch (UnauthorizedAccessException error) { log.Error(error); throw new OperationExecutionException(new Error(error), OperationExecutionStatus.AuthorizationErrors); } catch (Exception error) { log.Error(error); errors = new List <Error> { new Error(error) }; } histItem.PermissionsValidationVinishedTime = DateTime.Now; if (!errors.IsNullOrEmpty()) { histItem.ExecutionStatus = OperationExecutionStatus.PermissionsValidationErrors; histItem.Report = new OperationExecutionReport() { Errors = errors }; PutToHistory(operation, histItem); throw new OperationExecutionException(errors, OperationExecutionStatus.PermissionsValidationErrors); } try { errors = operation.GetDataValidationErrors(); } catch (Exception error) { log.Error(error); errors = new List <Error> { new Error(error) }; } histItem.DataValidationVinishedTime = DateTime.Now; if (!errors.IsNullOrEmpty()) { histItem.ExecutionStatus = OperationExecutionStatus.DataValidationErrors; histItem.Report = new OperationExecutionReport() { Errors = errors }; PutToHistory(operation, histItem); throw new OperationExecutionException(errors, OperationExecutionStatus.DataValidationErrors); } report = null; object result = null; try { var executeMethod = operation.GetType().GetTypeInfo().GetMethod("Execute"); var parameters = new object[] { null }; result = executeMethod.Invoke(operation, parameters); report = (OperationExecutionReport)parameters[0]; } catch (TargetInvocationException error) { if (error.InnerException != null) { log.Error(error.InnerException); errors = new List <Error> { new Error(error.InnerException) }; } } catch (Exception error) { log.Error(error); errors = new List <Error> { new Error(error) }; } histItem.ExecutionVinishedTime = DateTime.Now; if (report == null) { histItem.Report = report = new OperationExecutionReport() { Errors = errors }; } else { histItem.Report = report; if (!errors.IsNullOrEmpty()) { histItem.Report.Errors.AddRange(errors); } } if (!errors.IsNullOrEmpty()) { histItem.ExecutionStatus = OperationExecutionStatus.ExecutionCrushErrors; PutToHistory(operation, histItem); throw new OperationExecutionException(errors, OperationExecutionStatus.ExecutionCrushErrors); } if (!histItem.Report.Errors.IsNullOrEmpty()) { histItem.ExecutionStatus = OperationExecutionStatus.ExecutionProcessedErrors; } else { histItem.ExecutionStatus = OperationExecutionStatus.ExecutionWithoutErrors; } PutToHistory(operation, histItem); log.Info($"End execution of {operation.Name} {operation.Id}"); return(result); }
public TResult Execute <TData, TResult>(Operation <TData, TResult> operation, Operation parentOperation = null, OperationExecutionReport parentOperationReport = null) { return((TResult)Execute((Operation)operation, parentOperation, parentOperationReport)); }
public TResult Execute <TData, TResult>(Operation <TData, TResult> operation, Operation parentOperation, OperationExecutionReport parentOperationReport) { try { if (parentOperation == null) { return(Execute(operation)); } operation.ParentOpearionId = parentOperation.Id; operation.User = parentOperation.User; OperationExecutionReport report; var result = (TResult)ExecuteOperation(operation, out report); if (report != null && parentOperationReport != null) { parentOperationReport.SubReports.Add(report); } return(result); } catch (OperationExecutionException error) { throw error; } catch (Exception error) { log.Error(error); throw new OperationExecutionException(new Error(error), OperationExecutionStatus.InfrastructureErrors); } }