Add StartIn convenience method to start / resume workflow in x amount of time
This commit is contained in:
parent
41ca351d29
commit
2ff8d006f3
|
|
@ -12,5 +12,11 @@ namespace Elsa.Activities.Timers
|
|||
public static IActivityBuilder StartAt(this IBuilder builder, Func<ActivityExecutionContext, Instant> instant) => builder.StartAt(setup => setup.Set(x => x.Instant, instant));
|
||||
public static IActivityBuilder StartAt(this IBuilder builder, Func<Instant> instant) => builder.StartAt(setup => setup.Set(x => x.Instant, instant));
|
||||
public static IActivityBuilder StartAt(this IBuilder builder, Instant instant) => builder.StartAt(setup => setup.Set(x => x.Instant, instant));
|
||||
|
||||
public static IActivityBuilder StartIn(this IBuilder builder, Func<ActivityExecutionContext, Duration> timeout) => builder.StartAt(context => Now(context).Plus(timeout(context)));
|
||||
public static IActivityBuilder StartIn(this IBuilder builder, Func<Duration> timeout) => builder.StartAt(context => Now(context).Plus(timeout()));
|
||||
public static IActivityBuilder StartIn(this IBuilder builder, Duration timeout) => builder.StartAt(context => Now(context).Plus(timeout));
|
||||
|
||||
private static Instant Now(ActivityExecutionContext context) => context.GetService<IClock>().GetCurrentInstant();
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ namespace Elsa.Samples.Timers
|
|||
workflow
|
||||
.StartAt(_executeAt)
|
||||
.WriteLine(context => $"Started at {context.GetService<IClock>().GetCurrentInstant()}. Next event happens 3 seconds from now.")
|
||||
.StartAt(_executeAt.Plus(Duration.FromSeconds(3)))
|
||||
.StartIn(Duration.FromSeconds(3))
|
||||
.WriteLine(context => $"Follow-up occurred at {context.GetService<IClock>().GetCurrentInstant()}.");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue