Add SetContextId activity

This commit is contained in:
Sipke Schoorstra 2020-11-24 20:25:37 +01:00
parent d890c668cc
commit 4b85142bd1
3 changed files with 47 additions and 1 deletions

View file

@ -0,0 +1,26 @@
using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Services;
using Elsa.Services.Models;
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.Primitives
{
[Activity(
DisplayName = "Set Context ID",
Description = "Set context ID on the workflow.",
Category = "Primitives",
Outcomes = new[] { OutcomeNames.Done }
)]
public class SetContextId : Activity
{
[ActivityProperty(Hint = "The context ID to set.")]
public string ContextId { get; set; } = default!;
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
{
context.WorkflowExecutionContext.WorkflowInstance.ContextId = ContextId;
return Done();
}
}
}

View file

@ -0,0 +1,19 @@
using System;
using System.Threading.Tasks;
using Elsa.Activities.Primitives;
using Elsa.Builders;
using Elsa.Services.Models;
// ReSharper disable once CheckNamespace
namespace Elsa.Activities.ControlFlow
{
public static class SetContextIdBuilderExtensions
{
public static IOutcomeBuilder SetContextId(this IBuilder builder, Action<ISetupActivity<SetContextId>> setup) => builder.Then(setup).When(OutcomeNames.Done);
public static IOutcomeBuilder SetContextId(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IOutcomeBuilder SetContextId(this IBuilder builder, Func<ActivityExecutionContext, string> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IOutcomeBuilder SetContextId(this IBuilder builder, Func<ValueTask<string>> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IOutcomeBuilder SetContextId(this IBuilder builder, Func<string> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IOutcomeBuilder SetContextId(this IBuilder builder, string value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
}
}

View file

@ -149,11 +149,12 @@ namespace Microsoft.Extensions.DependencyInjection
.AddActivity<While>()
.AddActivity<Correlate>()
.AddActivity<SetVariable>()
.AddActivity<SetContextId>()
.AddActivity<ReceiveSignal>()
.AddTriggerProvider<ReceiveSignalTriggerProvider>()
.AddActivity<SendSignal>()
.AddScoped<ISignaler, Signaler>()
.AddActivity<Elsa.Activities.Workflows.RunWorkflow>()
.AddActivity<RunWorkflow>()
.AddTriggerProvider<RunWorkflowTriggerProvider>();
}
}