Пример #1
0
        public IHttpActionResult PostExecutionRequest([FromUri] string name, [FromBody] FunctionExecutionRequest request)
        {
            var result = VxbFacade.ExecuteUserDefinedFunction(name, request);

            if (result == null)
            {
                return(NotFound());
            }

            return(Ok(result));
        }
Пример #2
0
        public object ExecuteUserDefinedFunction(string name, FunctionExecutionRequest request)
        {
            var function = UserDefinedFuncsRepo.GetFunctionGraph(name);

            if (function == null)
            {
                return(null);
            }

            object[] objArgs = new object[request.Arguments.Length];
            for (int i = 0; i < request.Arguments.Length; i++)
            {
                objArgs[i] = DataTypes.Parse(request.Arguments[i].Value, request.Arguments[i].Type);
            }
            var constructor = new ExpressionTreeConstructor(name, function, FunctionsFacade);
            var expTree     = constructor.Construct();
            var lambda      = expTree.Compile();
            var result      = lambda.DynamicInvoke(objArgs);

            return(result);
        }