Fix workflow builder extensions return type

This commit is contained in:
Sipke Schoorstra 2021-01-09 12:02:28 +01:00
parent dd72ba3f14
commit f98d31842e
14 changed files with 66 additions and 58 deletions

View file

@ -13,7 +13,7 @@ namespace Elsa.Builders
public string? DisplayName { get; set; }
public string? Description { get; set; }
IDictionary<string, IActivityPropertyValueProvider>? PropertyValueProviders { get; }
bool PersistWorkflow { get; set; }
bool PersistWorkflowEnabled { get; set; }
bool LoadWorkflowContextEnabled { get; set; }
bool SaveWorkflowContextEnabled { get; set; }
bool PersistOutputEnabled { get; set; }
@ -27,5 +27,6 @@ namespace Elsa.Builders
IActivityBuilder WithDescription(string? value);
IActivityBuilder LoadWorkflowContext(bool value = true);
IActivityBuilder SaveWorkflowContext(bool value = true);
IActivityBuilder PersistWorkflow(bool value = true);
}
}

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 CorrelateBuilderExtensions
{
public static IActivityBuilder Correlate(this IBuilder builder, Action<ISetupActivity<Correlate>> setup) => builder.Then(setup);
public static IActivityBuilder Correlate(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IActivityBuilder Correlate(this IBuilder builder, Func<ActivityExecutionContext, string?> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IActivityBuilder Correlate(this IBuilder builder, Func<ValueTask<string?>> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IActivityBuilder Correlate(this IBuilder builder, Func<string?> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IActivityBuilder Correlate(this IBuilder builder, string? value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
}
}

View file

@ -1,19 +0,0 @@
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 CorrelateBuilderExtensions
{
public static IOutcomeBuilder Correlate(this IBuilder builder, Action<ISetupActivity<Correlate>> setup) => builder.Then(setup).When(OutcomeNames.Done);
public static IOutcomeBuilder Correlate(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IOutcomeBuilder Correlate(this IBuilder builder, Func<ActivityExecutionContext, string?> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IOutcomeBuilder Correlate(this IBuilder builder, Func<ValueTask<string?>> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IOutcomeBuilder Correlate(this IBuilder builder, Func<string?> value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
public static IOutcomeBuilder Correlate(this IBuilder builder, string? value) => builder.Correlate(activity => activity.Set(x => x.Value, value));
}
}

View file

@ -9,11 +9,11 @@ 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!));
public static IActivityBuilder SetContextId(this IBuilder builder, Action<ISetupActivity<SetContextId>> setup) => builder.Then(setup);
public static IActivityBuilder SetContextId(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IActivityBuilder SetContextId(this IBuilder builder, Func<ActivityExecutionContext, string> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IActivityBuilder SetContextId(this IBuilder builder, Func<ValueTask<string>> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IActivityBuilder SetContextId(this IBuilder builder, Func<string> value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
public static IActivityBuilder SetContextId(this IBuilder builder, string value) => builder.SetContextId(activity => activity.Set(x => x.ContextId, value!));
}
}

View file

@ -8,11 +8,11 @@ namespace Elsa.Activities.Primitives
{
public static class SetNameBuilderExtensions
{
public static IOutcomeBuilder SetName(this IBuilder builder, Action<ISetupActivity<SetName>> setup) => builder.Then(setup).When(OutcomeNames.Done);
public static IOutcomeBuilder SetName(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> value) => builder.SetName(activity => activity.WithValue(value));
public static IOutcomeBuilder SetName(this IBuilder builder, Func<ActivityExecutionContext, string?> value) => builder.SetName(activity => activity.WithValue(value));
public static IOutcomeBuilder SetName(this IBuilder builder, Func<ValueTask<string?>> value) => builder.SetName(activity => activity.WithValue(value));
public static IOutcomeBuilder SetName(this IBuilder builder, Func<string?> value) => builder.SetName(activity => activity.WithValue(value));
public static IOutcomeBuilder SetName(this IBuilder builder, string? value) => builder.SetName(activity => activity.WithValue(value));
public static IActivityBuilder SetName(this IBuilder builder, Action<ISetupActivity<SetName>> setup) => builder.Then(setup);
public static IActivityBuilder SetName(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string?>> value) => builder.SetName(activity => activity.WithValue(value));
public static IActivityBuilder SetName(this IBuilder builder, Func<ActivityExecutionContext, string?> value) => builder.SetName(activity => activity.WithValue(value));
public static IActivityBuilder SetName(this IBuilder builder, Func<ValueTask<string?>> value) => builder.SetName(activity => activity.WithValue(value));
public static IActivityBuilder SetName(this IBuilder builder, Func<string?> value) => builder.SetName(activity => activity.WithValue(value));
public static IActivityBuilder SetName(this IBuilder builder, string? value) => builder.SetName(activity => activity.WithValue(value));
}
}

View file

@ -8,42 +8,42 @@ namespace Elsa.Activities.Primitives
{
public static class SetTransientVariableBuilderExtensions
{
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, Action<ISetupActivity<SetTransientVariable>> setup) => builder.Then(setup).When(OutcomeNames.Done);
public static IActivityBuilder SetTransientVariable(this IBuilder builder, Action<ISetupActivity<SetTransientVariable>> setup) => builder.Then(setup);
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, ValueTask<object?>> value) =>
public static IActivityBuilder SetTransientVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, ValueTask<object?>> value) =>
builder.SetTransientVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, object?> value) =>
public static IActivityBuilder SetTransientVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, object?> value) =>
builder.SetTransientVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, string name, Func<ValueTask<object?>> value) =>
public static IActivityBuilder SetTransientVariable(this IBuilder builder, string name, Func<ValueTask<object?>> value) =>
builder.SetTransientVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, string name, Func<object?> value) =>
public static IActivityBuilder SetTransientVariable(this IBuilder builder, string name, Func<object?> value) =>
builder.SetTransientVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetTransientVariable(this IBuilder builder, string name, object? value) =>
public static IActivityBuilder SetTransientVariable(this IBuilder builder, string name, object? value) =>
builder.SetTransientVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetTransientVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<T>> value) => builder.SetTransientVariable(typeof(T).Name, async context => await value(context));
public static IOutcomeBuilder SetTransientVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, T> value) => builder.SetTransientVariable(typeof(T).Name, context => value(context));
public static IOutcomeBuilder SetTransientVariable<T>(this IBuilder builder, Func<ValueTask<T>> value) => builder.SetTransientVariable(typeof(T).Name, async () => await value());
public static IOutcomeBuilder SetTransientVariable<T>(this IBuilder builder, Func<T> value) => builder.SetTransientVariable(typeof(T).Name, () => value());
public static IOutcomeBuilder SetTransientVariable<T>(this IBuilder builder, T value) => builder.SetTransientVariable(typeof(T).Name, value);
public static IActivityBuilder SetTransientVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<T>> value) => builder.SetTransientVariable(typeof(T).Name, async context => await value(context));
public static IActivityBuilder SetTransientVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, T> value) => builder.SetTransientVariable(typeof(T).Name, context => value(context));
public static IActivityBuilder SetTransientVariable<T>(this IBuilder builder, Func<ValueTask<T>> value) => builder.SetTransientVariable(typeof(T).Name, async () => await value());
public static IActivityBuilder SetTransientVariable<T>(this IBuilder builder, Func<T> value) => builder.SetTransientVariable(typeof(T).Name, () => value());
public static IActivityBuilder SetTransientVariable<T>(this IBuilder builder, T value) => builder.SetTransientVariable(typeof(T).Name, value);
}
}

View file

@ -8,42 +8,42 @@ namespace Elsa.Activities.Primitives
{
public static class SetVariableBuilderExtensions
{
public static IOutcomeBuilder SetVariable(this IBuilder builder, Action<ISetupActivity<SetVariable>> setup) => builder.Then(setup).When(OutcomeNames.Done);
public static IActivityBuilder SetVariable(this IBuilder builder, Action<ISetupActivity<SetVariable>> setup) => builder.Then(setup);
public static IOutcomeBuilder SetVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, ValueTask<object?>> value) =>
public static IActivityBuilder SetVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, ValueTask<object?>> value) =>
builder.SetVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, object?> value) =>
public static IActivityBuilder SetVariable(this IBuilder builder, string name, Func<ActivityExecutionContext, object?> value) =>
builder.SetVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetVariable(this IBuilder builder, string name, Func<ValueTask<object?>> value) =>
public static IActivityBuilder SetVariable(this IBuilder builder, string name, Func<ValueTask<object?>> value) =>
builder.SetVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetVariable(this IBuilder builder, string name, Func<object?> value) =>
public static IActivityBuilder SetVariable(this IBuilder builder, string name, Func<object?> value) =>
builder.SetVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetVariable(this IBuilder builder, string name, object? value) =>
public static IActivityBuilder SetVariable(this IBuilder builder, string name, object? value) =>
builder.SetVariable(
activity => activity
.Set(x => x.VariableName, name)
.Set(x => x.Value, value));
public static IOutcomeBuilder SetVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<T>> value) => builder.SetVariable(typeof(T).Name, async context => await value(context));
public static IOutcomeBuilder SetVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, T> value) => builder.SetVariable(typeof(T).Name, context => value(context));
public static IOutcomeBuilder SetVariable<T>(this IBuilder builder, Func<ValueTask<T>> value) => builder.SetVariable(typeof(T).Name, async () => await value());
public static IOutcomeBuilder SetVariable<T>(this IBuilder builder, Func<T> value) => builder.SetVariable(typeof(T).Name, () => value());
public static IOutcomeBuilder SetVariable<T>(this IBuilder builder, T value) => builder.SetVariable(typeof(T).Name, value);
public static IActivityBuilder SetVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<T>> value) => builder.SetVariable(typeof(T).Name, async context => await value(context));
public static IActivityBuilder SetVariable<T>(this IBuilder builder, Func<ActivityExecutionContext, T> value) => builder.SetVariable(typeof(T).Name, context => value(context));
public static IActivityBuilder SetVariable<T>(this IBuilder builder, Func<ValueTask<T>> value) => builder.SetVariable(typeof(T).Name, async () => await value());
public static IActivityBuilder SetVariable<T>(this IBuilder builder, Func<T> value) => builder.SetVariable(typeof(T).Name, () => value());
public static IActivityBuilder SetVariable<T>(this IBuilder builder, T value) => builder.SetVariable(typeof(T).Name, value);
}
}

View file

@ -27,7 +27,7 @@ namespace Elsa.Builders
public string? Name { get; set; }
public string? DisplayName { get; set; }
public string? Description { get; set; }
public bool PersistWorkflow { get; set; }
public bool PersistWorkflowEnabled { get; set; }
public bool LoadWorkflowContextEnabled { get; set; }
public bool SaveWorkflowContextEnabled { get; set; }
public bool PersistOutputEnabled { get; set; }
@ -102,5 +102,11 @@ namespace Elsa.Builders
PersistOutputEnabled = value;
return this;
}
public IActivityBuilder PersistWorkflow(bool value)
{
PersistWorkflowEnabled = value;
return this;
}
}
}

View file

@ -195,8 +195,8 @@ namespace Elsa.Builders
{
var isComposite = typeof(CompositeActivity).IsAssignableFrom(builder.ActivityType);
return isComposite
? new CompositeActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityType.Name, builder.PersistWorkflow, builder.LoadWorkflowContextEnabled, builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled)
: new ActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityType.Name, builder.PersistWorkflow, builder.LoadWorkflowContextEnabled, builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled);
? new CompositeActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityType.Name, builder.PersistWorkflowEnabled, builder.LoadWorkflowContextEnabled, builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled)
: new ActivityBlueprint(builder.ActivityId, parent, builder.Name, builder.DisplayName, builder.Description, builder.ActivityType.Name, builder.PersistWorkflowEnabled, builder.LoadWorkflowContextEnabled, builder.SaveWorkflowContextEnabled, builder.PersistOutputEnabled);
}
}
}

View file

@ -7,7 +7,7 @@ namespace Elsa.Builders
{
public class OutcomeBuilder : IOutcomeBuilder
{
public OutcomeBuilder(ICompositeActivityBuilder workflowBuilder, IActivityBuilder source, string outcome = "Done")
public OutcomeBuilder(ICompositeActivityBuilder workflowBuilder, IActivityBuilder source, string outcome = OutcomeNames.Done)
{
WorkflowBuilder = workflowBuilder;
Source = source;

View file

@ -5,6 +5,7 @@
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Ccontrolflow_005Cifthen/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Cprimitives_005Csetname/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Csignaling_005Cactivities_005Creceivesignal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Csignaling_005Cactivities_005Csignalreceived/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Csignaling_005Creceivesignal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=activities_005Csignaling_005Csignaled/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=extensions/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>