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; } }
public ExecuteResponse(IExecuteRequest request) : base(Communication.RequestTypeEnum.Execute) { Request = request; Values = new Dictionary <string, object>(); }
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); } }