Fix Finish + CompositeActivity
This commit is contained in:
parent
2aed96616d
commit
a02147d2ee
|
|
@ -40,9 +40,7 @@ namespace Elsa.Services
|
|||
|
||||
if (finishOutput != null)
|
||||
{
|
||||
if(!string.IsNullOrWhiteSpace(finishOutput.Outcome))
|
||||
outcomes.Add(finishOutput.Outcome!);
|
||||
|
||||
outcomes.AddRange(finishOutput.Outcomes);
|
||||
output = finishOutput.Output;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,29 +13,29 @@ namespace Elsa.Activities.ControlFlow
|
|||
{
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Action<ISetupActivity<Finish>>? setup = default, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Then(setup, null, lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<object?>> output, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutput(output), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, object?> output, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutput(output), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<object?> output, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutput(output), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, object? output, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutput(output), lineNumber, sourceFile);
|
||||
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<IEnumerable<string>?>> outcomes, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcomes), lineNumber, sourceFile);
|
||||
builder.Finish(activity => activity.WithOutcomes(outcomes), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, IEnumerable<string>> outcomes, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcomes), lineNumber, sourceFile);
|
||||
builder.Finish(activity => activity.WithOutcomes(outcomes), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<IEnumerable<string>> outcomes, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcomes), lineNumber, sourceFile);
|
||||
builder.Finish(activity => activity.WithOutcomes(outcomes), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, IEnumerable<string> outcomes, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcomes), lineNumber, sourceFile);
|
||||
builder.Finish(activity => activity.WithOutcomes(outcomes), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, ValueTask<string>> outcome, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcome), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<ActivityExecutionContext, string> outcome, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcome), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, Func<string> outcome, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcome), lineNumber, sourceFile);
|
||||
|
||||
public static IActivityBuilder Finish(this IBuilder builder, string outcome, [CallerLineNumber] int lineNumber = default, [CallerFilePath] string? sourceFile = default) =>
|
||||
builder.Finish(activity => activity.WithOutcome(outcome), lineNumber, sourceFile);
|
||||
}
|
||||
}
|
||||
|
|
@ -13,10 +13,15 @@ namespace Elsa.Activities.ControlFlow
|
|||
public static ISetupActivity<Finish> WithOutput(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, object?> value) => activity.Set(x => x.OutputValue, value);
|
||||
public static ISetupActivity<Finish> WithOutput(this ISetupActivity<Finish> activity, Func<object?> value) => activity.Set(x => x.OutputValue, value);
|
||||
public static ISetupActivity<Finish> WithOutput(this ISetupActivity<Finish> activity, object? value) => activity.Set(x => x.OutputValue, value);
|
||||
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, ValueTask<IEnumerable<string>?>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, IEnumerable<string>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<IEnumerable<string>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, IEnumerable<string> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
|
||||
public static ISetupActivity<Finish> WithOutcomes(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, ValueTask<IEnumerable<string>?>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcomes(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, IEnumerable<string>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcomes(this ISetupActivity<Finish> activity, Func<IEnumerable<string>> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
public static ISetupActivity<Finish> WithOutcomes(this ISetupActivity<Finish> activity, IEnumerable<string> value) => activity.Set(x => x.OutcomeNames, value);
|
||||
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, ValueTask<string>> value) => activity.WithOutcomes(async x => new[] { await value(x) });
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<ActivityExecutionContext, string> value) => activity.WithOutcomes(x => new[] { value(x) });
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, Func<string> value) => activity.WithOutcomes(() => new[] { value() });
|
||||
public static ISetupActivity<Finish> WithOutcome(this ISetupActivity<Finish> activity, string value) => activity.WithOutcomes(new[] { value });
|
||||
}
|
||||
}
|
||||
|
|
@ -23,6 +23,8 @@ namespace Elsa.Samples.ProgrammaticCompositeActivitiesConsole.Activities
|
|||
public override void Build(ICompositeActivityBuilder activity)
|
||||
{
|
||||
activity
|
||||
// IMPORTANT: Notice that we need to get the "parent" state to get the `Start` value, since here we are in a different context than the CountDownActivity itself.
|
||||
// Accessing `Start` directly would return the captured value at the time this `Build` method executed when creating workflow blueprints.
|
||||
.For(context => context.GetParentState<int>(nameof(Start)), _ => 0, _ => -1, iterate =>
|
||||
{
|
||||
iterate.WriteLine(context => $"{context.GetInput<int>()}...");
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ namespace Elsa.Core.IntegrationTests.Workflows
|
|||
{
|
||||
private readonly object _output;
|
||||
public FinishWorkflow(object output) => _output = output;
|
||||
public void Build(IWorkflowBuilder builder) => builder.Finish(_output);
|
||||
public void Build(IWorkflowBuilder builder) => builder.Finish(finish => finish.WithOutput(_output));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue