public ExecuteResponse RunExecuteRequest(IExecuteRequest request)
        {
            ExecuteResponse response = new ExecuteResponse(request);

            foreach (var requestValue in request.RequestedValues)
            {
                if (requestValue == "NextManufacturerNumber")
                {
                    int currentMaxNumber;

                    if (_Data.ManufacturerRecordSet.Count > 0)
                    {
                        currentMaxNumber = _Data.ManufacturerRecordSet.Max(r => (int)r["ManufacturerNumber"]);
                    }
                    else
                    {
                        currentMaxNumber = 0;
                    }

                    response.Values.Add("NextManufacturerNumber", currentMaxNumber + 1);
                }
            }

            return(response);
        }
        public IExecutionResult Execute([FromBody] IExecuteRequest executeRequest)
        {
            if (executeRequest is null)
            {
                throw new ArgumentNullException(nameof(executeRequest));
            }
            if (executeRequest.Parameters == null)
            {
                executeRequest.Parameters = new ParametersCollection();
            }
            var parameters      = executeRequest.Parameters;
            var executionResult = new ExecutionResult(ref parameters) as IExecutionResult;

            executeRequest.Config = parseHelper(executeRequest.Config);
            _yamlScriptController.QuestionCallback = (FormulaExpressionContext sender, QuestionArgs args) =>
            {
                executionResult.Questions = args;
            };

            var result = _yamlScriptController.Parse(executeRequest.Config);

            if (result.IsError)
            {
                return(executionResult);
            }
            try
            {
                _yamlScriptController.ExecuteWorkflow(ref parameters, ref executionResult);
            }
            catch (UnresolvedException)
            {
                //a paramater is yet unresolved
                ResolveQuestionFromRouting(ref executionResult, ref executeRequest);
            }
            return(executionResult);
        }
 public async Task <IExecutionResult> Execute([FromBody] IExecuteRequest executeRequest)
 {
     return(await _serviceController.Execute(executeRequest));
 }
 private void ResolveQuestionFromRouting(ref IExecutionResult executionResult, ref IExecuteRequest executeRequest)
 {
     try
     {
         var missingParameters = executionResult.Questions?.Parameters;
         var type = executionResult.Questions?.Parameters.Select(p => p.Type);
         foreach (var missingParameter in missingParameters)
         {
             var missingParameterName = missingParameter.Name;
             var missingParameterType = missingParameter.Type;
             if (MissingParameterHasRouting(missingParameterName))
             {
                 var value = Task.Run(async() => await _routingController.GetParameterValue(missingParameterName)).Result;
                 if (value == null)
                 {
                     continue;
                 }
                 var parameter = new ClientParameter(missingParameterName, value, missingParameterType, missingParameterName);
                 executeRequest.Parameters.Add(parameter);
                 executionResult = Execute(executeRequest);
             }
         }
     }
     catch
     {
         return;
     }
 }
Exemple #5
0
 public ExecuteResponse(IExecuteRequest request)
     : base(Communication.RequestTypeEnum.Execute)
 {
     Request = request;
     Values  = new Dictionary <string, object>();
 }
Exemple #6
0
        private void ResolveQuestionFromRouting(ref IExecutionResult executionResult, ref IExecuteRequest executeRequest)
        {
            var missingParameterName = executionResult.QuestionFirstParameter?.Name;

            if (MissingParameterHasRouting(missingParameterName))
            {
                var value = _routingController.GetParameterValue(missingParameterName);
                if (value == null)
                {
                    return;
                }
                //var parameter = new RoutingParameter(missingParameterName, value);
                var parameter = new ClientParameter(missingParameterName, value, TypeInference.InferenceResult.TypeEnum.Unknown, missingParameterName);
                executeRequest.Parameters.Add(parameter);
                executionResult = Execute(executeRequest);
            }
        }