elsa-core/src/modules/Elsa.Scheduling/Activities/TimerBase.cs
Sipke Schoorstra 8fb797eaeb
Remove Elsa.Expressions.Dsl module and related DSL features
This commit completely removes the Elsa.Expressions.Dsl module, including all associated features, services, models, and dependencies. The DSL functionality, including its custom activities and integration options, has been fully eliminated from the project.
2025-06-02 21:52:10 +02:00

43 lines
1.3 KiB
C#

using System.Runtime.CompilerServices;
using Elsa.Expressions.Models;
using Elsa.Extensions;
using Elsa.Workflows;
namespace Elsa.Scheduling.Activities;
/// <summary>
/// </summary>
public abstract class TimerBase([CallerFilePath] string? source = null, [CallerLineNumber] int? line = null) : EventGenerator(source, line)
{
protected abstract TimeSpan GetInterval(ExpressionExecutionContext context);
protected virtual ValueTask OnTimerElapsedAsync(ActivityExecutionContext context)
{
OnTimerElapsed(context);
return default;
}
protected virtual void OnTimerElapsed(ActivityExecutionContext context)
{
}
/// <inheritdoc />
protected override void Execute(ActivityExecutionContext context)
{
var interval = GetInterval(context.ExpressionExecutionContext);
context.RepeatWithInterval(interval, TimerElapsedAsync);
}
/// <inheritdoc />
protected override object GetTriggerPayload(TriggerIndexingContext context)
{
var interval = GetInterval(context.ExpressionExecutionContext);
return context.GetTimerTriggerStimulus(interval);
}
private async ValueTask TimerElapsedAsync(ActivityExecutionContext context)
{
await OnTimerElapsedAsync(context);
await context.CompleteActivityAsync();
}
}