public override bool CanHandle(IExecutionPipelineContext context)
		{
			if(_command == null)
				return false;

			return base.CanHandle(context) && _command.CanExecute(context);
		}
Пример #2
0
        public void Handle(IExecutionPipelineContext context)
        {
            //在执行之前首先判断是否可以执行
            if (!this.CanHandle(context))
            {
                return;
            }

            //创建“Executing”事件参数
            var executingArgs = new ExecutionPipelineExecutingEventArgs(context);

            //激发“Executing”事件
            this.OnExecuting(executingArgs);

            if (executingArgs.Cancel)
            {
                return;
            }

            //执行过滤器的前半截
            var filters = ExecutionUtility.InvokeFiltersExecuting(_filters, filter => filter.OnExecuting(context));

            //执行当前处理请求
            this.OnExecute(context);

            //执行过滤器的后半截
            ExecutionUtility.InvokeFiltersExecuted(filters, filter => filter.OnExecuted(context));

            //激发“Executed”事件
            this.OnExecuted(new ExecutionPipelineExecutedEventArgs(context));
        }
 protected override void OnExecute(IExecutionPipelineContext context)
 {
     if (_command != null)
     {
         context.Result = _command.Execute(context);
     }
 }
Пример #4
0
        protected virtual bool InvokePipeline(IExecutionPipelineContext context)
        {
            var pipeline = context.Pipeline;

            if (pipeline == null)
            {
                return(false);
            }

            //计算当前管道的执行条件,如果管道的条件评估器不为空则使用管道的评估器进行验证,否则使用管道的处理程序的CanHandle方法进行验证
            var enabled = pipeline.Predication != null?pipeline.Predication.Predicate(context) : pipeline.Handler.CanHandle(context);

            if (!enabled)
            {
                return(false);
            }

            //激发“PipelineExecuting”事件
            this.OnPipelineExecuting(new ExecutionPipelineExecutingEventArgs(context));

            Stack <IExecutionFilter> stack = null;

            //调用当前管道过滤器的前半截
            if (pipeline.HasFilters)
            {
                stack = ExecutionUtility.InvokeFiltersExecuting(pipeline.Filters, filter => this.OnFilterExecuting(filter, context));
            }

            //激发“HandlerExecuting”事件
            this.OnHandlerExecuting(new ExecutionPipelineExecutingEventArgs(context));

            //调用管道处理器处理当前请求
            var isHandled = this.InvokeHandler(context);

            //设置是否处理成功的值到到上下文的扩展属性集中
            context.ExtendedProperties["__IsHandled__"] = isHandled;

            //激发“HandlerExecuted”事件
            this.OnHandlerExecuted(new ExecutionPipelineExecutedEventArgs(context));

            //调用后续管道集合
            if (context.HasChildren)
            {
                context.Result = this.InvokePipelines(context.Children, p => this.CreatePipelineContext(context, p, context.Result));
            }

            //调用当前管道过滤器的后半截
            if (stack != null && stack.Count > 0)
            {
                ExecutionUtility.InvokeFiltersExecuted(stack, filter => this.OnFilterExecuted(filter, context));
            }

            //激发“PipelineExecuted”事件
            this.OnPipelineExecuted(new ExecutionPipelineExecutedEventArgs(context));

            return(isHandled);
        }
        public override bool CanHandle(IExecutionPipelineContext context)
        {
            if (_command == null)
            {
                return(false);
            }

            return(base.CanHandle(context) && _command.CanExecute(context));
        }
Пример #6
0
        public virtual bool CanHandle(IExecutionPipelineContext context)
        {
            //如果断言对象是空则返回是否可用变量的值
            if (_predication == null)
            {
                return(_enabled);
            }

            //返回断言对象的断言测试的值
            return(_enabled && _predication.Predicate(context));
        }
Пример #7
0
        protected virtual bool InvokeHandler(IExecutionPipelineContext context)
        {
            var handler   = context.Pipeline.Handler;
            var canHandle = handler != null && handler.CanHandle(context);

            if (canHandle)
            {
                handler.Handle(context);
            }

            return(canHandle);
        }
Пример #8
0
        private void LogMessages <TRequestDto, TOut>(TRequestDto requestDto, IExecutionPipelineContext <TOut> context)
        {
            var errorList = context.Messages.Where(a => a.Key != "E3");

            if (context.HasErrors() && errorList.Any())
            {
                var req     = ((object)requestDto).ToDictionary();
                var message = string.Empty;
                foreach (var item in errorList)
                {
                    message += $"{item.Key} - {item.Message} {Environment.NewLine}";
                }

                req.Add($"errorMessageCollection", message);

                _log.Fatal(this.GetType().Name, requestDto.GetType().Name, req.DictionaryToString());
            }
        }
Пример #9
0
        private void LogMessages <TRequestDto, TOut>(TRequestDto requestDto, IExecutionPipelineContext <TOut> context,
                                                     object scopeTag)
        {
            foreach (var message in context.Messages.Where(a => a.Key != "E2"))
            {
                switch (message.Type)
                {
                case MessageDtoType.Error:
                    _logger.Fatal(
                        $"{scopeTag} - {requestDto.GetType().Name} - {JsonConvert.SerializeObject(requestDto, Formatting.None)} " +
                        $": {message.Key} - {message.Message} ");
                    break;

                case MessageDtoType.Warning:
                    _logger.Warn(
                        $"{scopeTag} - {requestDto.GetType().Name} - {JsonConvert.SerializeObject(requestDto, Formatting.None)} " +
                        $": {message.Key} - {message.Message} ");
                    break;

                case MessageDtoType.Success:
                    break;
                }
            }
        }
		protected abstract void OnExecute(IExecutionPipelineContext context);
		public virtual bool CanHandle(IExecutionPipelineContext context)
		{
			//如果断言对象是空则返回是否可用变量的值
			if(_predication == null)
				return _enabled;

			//返回断言对象的断言测试的值
			return _enabled && _predication.Predicate(context);
		}
		public void Handle(IExecutionPipelineContext context)
		{
			//在执行之前首先判断是否可以执行
			if(!this.CanHandle(context))
				return;

			//创建“Executing”事件参数
			var executingArgs = new ExecutionPipelineExecutingEventArgs(context);

			//激发“Executing”事件
			this.OnExecuting(executingArgs);

			if(executingArgs.Cancel)
				return;

			//执行过滤器的前半截
			var filters = ExecutionUtility.InvokeFiltersExecuting(_filters, filter => filter.OnExecuting(context));

			//执行当前处理请求
			this.OnExecute(context);

			//执行过滤器的后半截
			ExecutionUtility.InvokeFiltersExecuted(filters, filter => filter.OnExecuted(context));

			//激发“Executed”事件
			this.OnExecuted(new ExecutionPipelineExecutedEventArgs(context));
		}
Пример #13
0
 public EventFilter(IExecutionPipelineContext <TOut> context, ILifetimeScope scope) : base(scope)
 {
     _context = context;
 }
		protected override void OnExecute(IExecutionPipelineContext context)
		{
			if(_command != null)
				context.Result = _command.Execute(context);
		}
Пример #15
0
 public AggregateFilter(IExecutionPipelineContext <TOut> context, ILifetimeScope scope, IApplicationUserContext applicationUserContext) : base(scope)
 {
     _context = context;
     _applicationUserContext = applicationUserContext;
 }
Пример #16
0
 protected abstract void OnExecute(IExecutionPipelineContext context);
Пример #17
0
		protected virtual bool InvokeHandler(IExecutionPipelineContext context)
		{
			var handler = context.Pipeline.Handler;
			var canHandle = handler != null && handler.CanHandle(context);

			if(canHandle)
				handler.Handle(context);

			return canHandle;
		}