protected override async Task <ActivityExecutionResult> OnExecuteAsync(HttpResponseAction activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
        {
            var response = httpContextAccessor.HttpContext.Response;

            response.StatusCode  = (int)activity.StatusCode;
            response.ContentType = await expressionEvaluator.EvaluateAsync(activity.ContentType, workflowContext, cancellationToken);

            var headersText = await expressionEvaluator.EvaluateAsync(activity.ResponseHeaders, workflowContext, cancellationToken);

            if (headersText != null)
            {
                var headersQuery =
                    from line in Regex.Split(headersText, "\\n", RegexOptions.Multiline)
                    let pair = line.Split(':', '=')
                               select new KeyValuePair <string, string>(pair[0], pair[1]);

                foreach (var header in headersQuery)
                {
                    var headerValueExpression = new WorkflowExpression <string>(activity.ResponseHeaders.Syntax, header.Value);
                    response.Headers[header.Key] = await expressionEvaluator.EvaluateAsync(headerValueExpression, workflowContext, cancellationToken);
                }
            }

            var bodyText = await expressionEvaluator.EvaluateAsync(activity.Body, workflowContext, cancellationToken);

            if (!string.IsNullOrWhiteSpace(bodyText))
            {
                await response.WriteAsync(bodyText, cancellationToken);
            }

            return(TriggerEndpoint("Done"));
        }
Esempio n. 2
0
        protected override async Task <ActivityExecutionResult> OnExecuteAsync(SetVariable activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
        {
            var value = await expressionEvaluator.EvaluateAsync(activity.ValueExpression, workflowContext, cancellationToken);

            workflowContext.CurrentScope.SetVariable(activity.VariableName, value);
            return(TriggerEndpoint("Done"));
        }
 public static async Task <T> EvaluateAsync <T>(
     this IWorkflowExpressionEvaluator evaluator,
     IWorkflowExpression <T> expression,
     WorkflowExecutionContext workflowExecutionContext,
     CancellationToken cancellationToken = default)
 {
     return((T)await evaluator.EvaluateAsync(expression, typeof(T), workflowExecutionContext, cancellationToken));
 }
Esempio n. 4
0
        protected override async Task <ActivityExecutionResult> OnExecuteAsync(WriteLine activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
        {
            var text = await evaluator.EvaluateAsync(activity.TextExpression, workflowContext, cancellationToken);

            await output.WriteLineAsync(text);

            return(TriggerEndpoint("Done"));
        }
Esempio n. 5
0
        protected override async Task <ActivityExecutionResult> OnExecuteAsync(IfElse activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken)
        {
            var result = await expressionEvaluator.EvaluateAsync(activity.ConditionExpression, workflowContext, cancellationToken);

            return(TriggerEndpoint(result ? "True" : "False"));
        }