diff --git a/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextId.cs b/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextId.cs new file mode 100644 index 000000000..1d49b663a --- /dev/null +++ b/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextId.cs @@ -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(); + } + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextIdBuilderExtensions.cs b/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextIdBuilderExtensions.cs new file mode 100644 index 000000000..96fe969d3 --- /dev/null +++ b/src/core/Elsa.Core/Activities/Primitives/SetContextId/SetContextIdBuilderExtensions.cs @@ -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> setup) => builder.Then(setup).When(OutcomeNames.Done); + public static IOutcomeBuilder SetContextId(this IBuilder builder, Func> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!)); + public static IOutcomeBuilder SetContextId(this IBuilder builder, Func value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!)); + public static IOutcomeBuilder SetContextId(this IBuilder builder, Func> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!)); + public static IOutcomeBuilder SetContextId(this IBuilder builder, Func 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!)); + } +} \ No newline at end of file diff --git a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs index c1e780c0c..080bf362b 100644 --- a/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Extensions/ElsaServiceCollectionExtensions.cs @@ -149,11 +149,12 @@ namespace Microsoft.Extensions.DependencyInjection .AddActivity() .AddActivity() .AddActivity() + .AddActivity() .AddActivity() .AddTriggerProvider() .AddActivity() .AddScoped() - .AddActivity() + .AddActivity() .AddTriggerProvider(); } } \ No newline at end of file