Implemented SetVariable activity (#26)
This commit is contained in:
parent
b90ef01e7c
commit
ffe071ca55
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -16,13 +17,16 @@ namespace Elsa.Activities.Http.Drivers
|
|||
{
|
||||
private readonly IHttpContextAccessor httpContextAccessor;
|
||||
private readonly IWorkflowExpressionEvaluator expressionEvaluator;
|
||||
private readonly IEnumerable<IContentFormatter> contentFormatters;
|
||||
|
||||
public HttpRequestTriggerDriver(
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
IWorkflowExpressionEvaluator expressionEvaluator)
|
||||
IWorkflowExpressionEvaluator expressionEvaluator,
|
||||
IEnumerable<IContentFormatter> contentFormatters)
|
||||
{
|
||||
this.httpContextAccessor = httpContextAccessor;
|
||||
this.expressionEvaluator = expressionEvaluator;
|
||||
this.contentFormatters = contentFormatters;
|
||||
}
|
||||
|
||||
protected override ActivityExecutionResult OnExecute(HttpRequestTrigger activity, WorkflowExecutionContext workflowContext)
|
||||
|
|
@ -47,15 +51,22 @@ namespace Elsa.Activities.Http.Drivers
|
|||
{
|
||||
model.Form = (await request.ReadFormAsync(cancellationToken)).ToDictionary(x => x.Key, x => x.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
model.Content = await request.ReadBodyAsync();
|
||||
}
|
||||
|
||||
var formatter = SelectContentFormatter(request.ContentType);
|
||||
var content = await request.ReadBodyAsync();
|
||||
model.Content = content;
|
||||
model.FormattedContent = await formatter.FormatAsync(content, request.ContentType);
|
||||
}
|
||||
|
||||
workflowContext.CurrentScope.LastResult = model;
|
||||
|
||||
return Endpoint("Done");
|
||||
}
|
||||
|
||||
private IContentFormatter SelectContentFormatter(string contentType)
|
||||
{
|
||||
var formatters = contentFormatters.OrderByDescending(x => x.Priority).ToList();
|
||||
return formatters.FirstOrDefault(x => x.SupportedContentTypes.Contains(contentType, StringComparer.OrdinalIgnoreCase)) ?? formatters.Last();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ namespace Elsa.Activities.Http.Models
|
|||
public IDictionary<string, StringValues> QueryString { get; set; }
|
||||
public IDictionary<string, StringValues> Headers { get; set; }
|
||||
public string Content { get; set; }
|
||||
public object FormattedContent { get; set; }
|
||||
public IDictionary<string, StringValues> Form { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -19,8 +19,8 @@ namespace Elsa.Activities.Primitives.Drivers
|
|||
|
||||
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);
|
||||
var value = await expressionEvaluator.EvaluateAsync(activity.ValueExpression, workflowContext, cancellationToken);
|
||||
workflowContext.CurrentScope.SetVariable(activity.VariableName, value);
|
||||
return Endpoint("Done");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,22 @@
|
|||
using Elsa.Activities.Primitives.Activities;
|
||||
using Elsa.Web.Activities.Primitives.ViewModels;
|
||||
using Elsa.Web.Components.ViewModels;
|
||||
using Elsa.Web.Drivers;
|
||||
|
||||
namespace Elsa.Web.Activities.Primitives.Drivers
|
||||
{
|
||||
public class SetVariableDisplay : ActivityDisplayDriver<SetVariable>
|
||||
public class SetVariableDisplay : ActivityDisplayDriver<SetVariable, SetVariableViewModel>
|
||||
{
|
||||
protected override void EditActivity(SetVariable activity, SetVariableViewModel model)
|
||||
{
|
||||
model.VariableName = activity.VariableName;
|
||||
model.ValueExpression = new ExpressionViewModel(activity.ValueExpression);
|
||||
}
|
||||
|
||||
protected override void UpdateActivity(SetVariableViewModel model, SetVariable activity)
|
||||
{
|
||||
activity.VariableName = model.VariableName;
|
||||
activity.ValueExpression = model.ValueExpression.ToWorkflowExpression<object>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using Elsa.Web.Components.ViewModels;
|
||||
|
||||
namespace Elsa.Web.Activities.Primitives.ViewModels
|
||||
{
|
||||
public class SetVariableViewModel
|
||||
{
|
||||
[Required]
|
||||
public string VariableName { get; set; }
|
||||
public ExpressionViewModel ValueExpression { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
@model Elsa.Web.ViewModels.ActivityShapeModel<Elsa.Activities.Primitives.Activities.SetVariable>
|
||||
@model ActivityShapeModel<SetVariable>
|
||||
@{
|
||||
var activityDescriptor = Model.Activity.Descriptor;
|
||||
}
|
||||
<h4 class="card-title"><i class="fa fa-gem"></i>@activityDescriptor.DisplayText</h4>
|
||||
<h4 class="card-title"><i class="fa fa-pencil"></i>@activityDescriptor.DisplayText</h4>
|
||||
<p>@activityDescriptor.Description</p>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
@model Elsa.Web.ViewModels.ActivityShapeModel<Elsa.Activities.Primitives.Activities.SetVariable>
|
||||
@model ActivityShapeModel<SetVariable>
|
||||
|
||||
<header>
|
||||
<h4><i class="fa fa-pencil"></i>@Model.DisplayText</h4>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
@model SetVariableViewModel
|
||||
<div class="form-group">
|
||||
<label asp-for="VariableName">@T["Variable Name"]</label>
|
||||
<input asp-for="VariableName" class="form-control"/>
|
||||
<span asp-validation-for="VariableName" class="text-danger"></span>
|
||||
<small class="form-text text-muted">@T["The name of the variable to set."]</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ValueExpression">@T["Value"]</label>
|
||||
<vc:expression-editor model="@Model.ValueExpression" prefix="@Html.NameFor(m => m.ValueExpression)"></vc:expression-editor>
|
||||
<span asp-validation-for="ValueExpression" class="text-danger"></span>
|
||||
<small class="form-text text-muted">@T["Enter an expression that evaluates to the value to use for the variable to set."]</small>
|
||||
</div>
|
||||
Loading…
Reference in a new issue