diff --git a/Elsa.sln b/Elsa.sln index 0733122e8..6b0a00c24 100644 --- a/Elsa.sln +++ b/Elsa.sln @@ -168,7 +168,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{8960 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Api.Client", "src\clients\Elsa.Api.Client\Elsa.Api.Client.csproj", "{1FCB2200-28B8-4703-8E89-73241AAED047}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.QuartzIntegration", "src\samples\aspnet\Elsa.Samples.QuartzIntegration\Elsa.Samples.QuartzIntegration.csproj", "{B0312D9E-FA30-43E9-B666-40A8782D6E1C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.AspNet.QuartzIntegration", "src\samples\aspnet\Elsa.Samples.AspNet.QuartzIntegration\Elsa.Samples.AspNet.QuartzIntegration.csproj", "{B0312D9E-FA30-43E9-B666-40A8782D6E1C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.HangfireIntegration", "src\samples\aspnet\Elsa.Samples.HangfireIntegration\Elsa.Samples.HangfireIntegration.csproj", "{D2614FC7-102F-4F78-BB06-7C87304A10BA}" EndProject diff --git a/src/modules/Elsa.Quartz/Services/QuartzWorkflowScheduler.cs b/src/modules/Elsa.Quartz/Services/QuartzWorkflowScheduler.cs index e9fe38fb3..02b12ab2d 100644 --- a/src/modules/Elsa.Quartz/Services/QuartzWorkflowScheduler.cs +++ b/src/modules/Elsa.Quartz/Services/QuartzWorkflowScheduler.cs @@ -81,7 +81,10 @@ public class QuartzWorkflowScheduler : IWorkflowScheduler { var scheduler = await _schedulerFactory.GetScheduler(cancellationToken); var trigger = TriggerBuilder.Create().ForJob(RunWorkflowJob.JobKey).UsingJobData(CreateJobDataMap(request)).WithIdentity(taskName).WithCronSchedule(cronExpression).Build(); - await scheduler.ScheduleJob(trigger, cancellationToken); + + if(!await scheduler.CheckExists(trigger.Key, cancellationToken)) + await scheduler.ScheduleJob(trigger, cancellationToken); + } /// diff --git a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/Elsa.Samples.QuartzIntegration.csproj b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Elsa.Samples.AspNet.QuartzIntegration.csproj similarity index 100% rename from src/samples/aspnet/Elsa.Samples.QuartzIntegration/Elsa.Samples.QuartzIntegration.csproj rename to src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Elsa.Samples.AspNet.QuartzIntegration.csproj diff --git a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/Program.cs b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Program.cs similarity index 98% rename from src/samples/aspnet/Elsa.Samples.QuartzIntegration/Program.cs rename to src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Program.cs index 9a563704f..deb450f36 100644 --- a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Program.cs @@ -44,6 +44,8 @@ builder.Services.AddElsa(elsa => // Use default authentication (JWT). elsa.UseDefaultAuthentication(); + + elsa.AddWorkflowsFrom(); }); // Configure CORS to allow designer app hosted on a different origin to invoke the APIs. diff --git a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/Properties/launchSettings.json b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Properties/launchSettings.json similarity index 100% rename from src/samples/aspnet/Elsa.Samples.QuartzIntegration/Properties/launchSettings.json rename to src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Properties/launchSettings.json diff --git a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/README.md b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/README.md similarity index 100% rename from src/samples/aspnet/Elsa.Samples.QuartzIntegration/README.md rename to src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/README.md diff --git a/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Workflows/HeartbeatWorkflow.cs b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Workflows/HeartbeatWorkflow.cs new file mode 100644 index 000000000..de925c299 --- /dev/null +++ b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/Workflows/HeartbeatWorkflow.cs @@ -0,0 +1,38 @@ +using Elsa.Common.Contracts; +using Elsa.Scheduling.Activities; +using Elsa.Workflows.Core.Abstractions; +using Elsa.Workflows.Core.Activities; +using Elsa.Workflows.Core.Contracts; +using JetBrains.Annotations; + +namespace Elsa.Samples.AspNet.QuartzIntegration.Workflows; + +[PublicAPI] +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 Cron + { + CronExpression = new("*/1 * * * * ?"), + CanStartWorkflow = true + }, + new WriteLine + { + Text = new($"Heartbeat workflow triggered at {_systemClock.UtcNow.LocalDateTime}") + } + } + }; + } +} \ No newline at end of file diff --git a/src/samples/aspnet/Elsa.Samples.QuartzIntegration/appsettings.json b/src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/appsettings.json similarity index 100% rename from src/samples/aspnet/Elsa.Samples.QuartzIntegration/appsettings.json rename to src/samples/aspnet/Elsa.Samples.AspNet.QuartzIntegration/appsettings.json