I tried to reproduce the official Elsa.Samples.AspNet.QuartzIntegration sample with only changing Cron trigger to Timer, and got this exception.
Exception:
Quartz.ObjectAlreadyExistsException: Unable to store Trigger: 'DEFAULT.4e5786d42791436fa1703fc134eebae3', because one already exists with this identification.
at Quartz.Simpl.RAMJobStore.StoreTriggerInternal(IOperableTrigger newTrigger, Boolean replaceExisting)
at Quartz.Simpl.RAMJobStore.StoreTrigger(IOperableTrigger newTrigger, Boolean replaceExisting, CancellationToken cancellationToken)
at Quartz.Core.QuartzScheduler.ScheduleJob(ITrigger trigger, CancellationToken cancellationToken)
at Elsa.Quartz.Services.QuartzWorkflowScheduler.ScheduleRecurringAsync(String taskName, DispatchWorkflowDefinitionRequest request, DateTimeOffset startAt, TimeSpan interval, CancellationToken cancellationToken)
at Elsa.Scheduling.Services.DefaultTriggerScheduler.ScheduleAsync(IEnumerable`1 triggers, CancellationToken cancellationToken)
at Elsa.Scheduling.HostedServices.CreateSchedulesHostedService.ExecuteAsync(CancellationToken stoppingToken)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Program.<Main>$(String[] args) in ....../Elsa.Test/Program.cs:line 34
Program.cs:
using Elsa.Common.Contracts;
using Elsa.EntityFrameworkCore.Modules.Management;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Elsa.Extensions;
using Elsa.Workflows.Core;
using Elsa.Workflows.Core.Activities;
using Elsa.Workflows.Core.Contracts;
using Elsa.Workflows.Core.Models;
using Microsoft.AspNetCore.Builder;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddElsa(elsa =>
{
elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore());
elsa.UseWorkflowRuntime(runtime =>
{
runtime.UseEntityFrameworkCore();
});
elsa.UseQuartz();
elsa.UseScheduling(scheduling => scheduling.UseQuartzScheduler());
elsa.AddWorkflowsFrom<Program>();
});
var app = builder.Build();
app.Run();
public class HeartbeatWorkflow : WorkflowBase
{
private readonly ISystemClock _systemClock;
public HeartbeatWorkflow(ISystemClock systemClock)
{
_systemClock = systemClock;
}
protected override void Build(IWorkflowBuilder builder)
{
builder.Root = new Sequence
{
Activities =
{
new Elsa.Scheduling.Activities.Timer()
{
Interval = new(TimeSpan.FromSeconds(1)),
CanStartWorkflow = true,
},
new WriteLine(new Input<string>($"Heartbeat workflow triggered at {_systemClock.UtcNow.LocalDateTime}"))
}
};
}
}
I tried to reproduce the official
Elsa.Samples.AspNet.QuartzIntegration
sample with only changingCron
trigger toTimer
, and got this exception.Exception:
Program.cs:
csproj: