public override bool CanHandle(IExecutionPipelineContext context) { if(_command == null) return false; return base.CanHandle(context) && _command.CanExecute(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)); }
protected override void OnExecute(IExecutionPipelineContext context) { if (_command != null) { context.Result = _command.Execute(context); } }
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)); }
public virtual bool CanHandle(IExecutionPipelineContext context) { //如果断言对象是空则返回是否可用变量的值 if (_predication == null) { return(_enabled); } //返回断言对象的断言测试的值 return(_enabled && _predication.Predicate(context)); }
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); }
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()); } }
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)); }
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); }
public AggregateFilter(IExecutionPipelineContext <TOut> context, ILifetimeScope scope, IApplicationUserContext applicationUserContext) : base(scope) { _context = context; _applicationUserContext = applicationUserContext; }
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; }