示例#1
0
 public Task <PipelineResult> ExecuteAsync(PipelineExecutionContext <BasicRequest> context)
 {
     Trace.WriteLine("COMPLETED BASIC PIPELINE STEP");
     return(Task.FromResult(
                PipelineResult.Success(new[] { new BasicEventHappened(1) })
                ));
 }
示例#2
0
        public void Run()
        {
            try
            {
                _message = _dbContext.Messages.First(m => m.Id == _messageId);
                _message.AttemptCount++;
                _message.StatusCode = (int)MessageStatusCodes.Preparing;
                _dbContext.SaveChanges();

                var workflowActions = _dbContext
                                      .WorkflowActions
                                      .Where(wa => wa.Workflow.RequestCodeId == _requestCode)
                                      .ToList();

                List <GlobalSetting> globalSettings = _dbContext.GlobalSettings.ToList();
                _workflowExecutionContext = new WorkflowExecutionContext(_message, globalSettings);

                SetMessageStatus(MessageStatusCodes.InProgress);
                foreach (var workflowAction in workflowActions)
                {
                    PipelineExecutionContext pipelineExecutionContext = new PipelineExecutionContext(_workflowExecutionContext, _dbContext);
                    PipelineProcessor        pipeline = new PipelineProcessor(pipelineExecutionContext, workflowAction);
                    pipeline.Run();
                    //TODO: Temp solution
                    _message.ResponseBody = pipelineExecutionContext.ResponseBody;
                }
                SetMessageStatus(MessageStatusCodes.Processed);
            }
            catch (Exception ex)
            {
                log.Fatal("Во время выполнения работы WorkflowProcessor произошла ошибка", ex);
                _message.ErrorMessage = ex.Message;
                SetMessageStatus(MessageStatusCodes.Error);
            }
        }
示例#3
0
        public async Task <PipelineResult> ExecuteAsync(PipelineExecutionContext <TRequest> context)
        {
            var result = new PipelineResult();

            if (result == null)
            {
                return(PipelineResult.Error(500, "Cannot build initial result object"));
            }

            foreach (var step in _steps.Where(m => m is IPipelineStep <TRequest>).Select(m => m as IPipelineStep <TRequest>))
            {
                // execute!!
                var stepResult = await step.ExecuteAsync(context);

                // calculate the running result aggregation
                result.IsSuccessful &= stepResult.IsSuccessful;
                result.Messages      = result.Messages == null ? stepResult.Messages : result.Messages.Union(stepResult.Messages);
                result.Events        = result.Events == null ? stepResult.Events : result.Events.Union(stepResult.Events);

                // do we need to get out of here because of an error?
                if (context.Options.BreakOnError && !result.IsSuccessful)
                {
                    return(result);
                }
            }

            return(result);
        }
示例#4
0
 public Task <PipelineResult> ExecuteAsync(PipelineExecutionContext <CreateTodoTask> context)
 {
     throw new System.NotImplementedException();
 }