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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 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);
        }
Exemplo n.º 10
0
 public TResult Execute <TData, TResult>(Operation <TData, TResult> operation, Operation parentOperation = null, OperationExecutionReport parentOperationReport = null)
 {
     return((TResult)Execute((Operation)operation, parentOperation, parentOperationReport));
 }
Exemplo n.º 11
0
        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);
            }
        }