public async Task <T> EvaluateAsync <T>(WorkflowExpression <T> expression, WorkflowExecutionContext workflowContext) { var templateContext = CreateTemplateContext(workflowContext); var expressionContext = new WorkflowExecutionExpressionContext(templateContext, workflowContext); await _workflowContextHandlers.InvokeAsync(x => x.EvaluatingExpressionAsync(expressionContext), _logger); var result = await _liquidTemplateManager.RenderAsync(expression.Expression, System.Text.Encodings.Web.JavaScriptEncoder.Default, templateContext); return(string.IsNullOrWhiteSpace(result) ? default(T) : (T)Convert.ChangeType(result, typeof(T))); }
public async Task <T> EvaluateAsync <T>(WorkflowExpression <T> expression, WorkflowExecutionContext workflowContext, TextEncoder encoder) { var templateContext = new TemplateContext(_templateOptions); var expressionContext = new WorkflowExecutionExpressionContext(templateContext, workflowContext); await _workflowContextHandlers.InvokeAsync((h, expressionContext) => h.EvaluatingExpressionAsync(expressionContext), expressionContext, _logger); // Set WorkflowContext as a local scope property. var result = await _liquidTemplateManager.RenderStringAsync( expression.Expression, encoder ?? NullEncoder.Default, new Dictionary <string, FluidValue>() { ["Workflow"] = new ObjectValue(workflowContext) } ); return(String.IsNullOrWhiteSpace(result) ? default : (T)Convert.ChangeType(result, typeof(T))); }
public async Task <T> EvaluateAsync <T>(WorkflowExpression <T> expression, WorkflowExecutionContext workflowContext, TextEncoder encoder) { var templateContext = CreateTemplateContext(workflowContext); var expressionContext = new WorkflowExecutionExpressionContext(templateContext, workflowContext); await _workflowContextHandlers.InvokeAsync((h, expressionContext) => h.EvaluatingExpressionAsync(expressionContext), expressionContext, _logger); // Set WorkflowContext as a local scope property. var result = await _liquidTemplateManager.RenderAsync( expression.Expression, encoder ?? NullEncoder.Default, scope => scope.SetValue("Workflow", workflowContext) ); return(string.IsNullOrWhiteSpace(result) ? default(T) : (T)Convert.ChangeType(result, typeof(T))); }
public virtual Task EvaluatingExpressionAsync(WorkflowExecutionExpressionContext context) { return(Task.CompletedTask); }