diff --git a/src/activities/Elsa.Activities.Temporal.Hangfire/Extensions/TimersOptionsExtensions.cs b/src/activities/Elsa.Activities.Temporal.Hangfire/Extensions/TimersOptionsExtensions.cs index 463060d74..21ba35bf9 100644 --- a/src/activities/Elsa.Activities.Temporal.Hangfire/Extensions/TimersOptionsExtensions.cs +++ b/src/activities/Elsa.Activities.Temporal.Hangfire/Extensions/TimersOptionsExtensions.cs @@ -23,13 +23,13 @@ namespace Elsa } /// - /// Add Elsa Hangfire Services for background processing and Hangfire Services + /// Add Elsa Hangfire Services for background processing and Hangfire services. /// /// - /// Only if Hangfire is not already registered in DI + /// Use only if Hangfire is not already registered in DI. /// - /// - /// Hangfire settings + /// The TimersOptions being configured + /// Configure Hangfire settings public static void UseHangfire(this TimersOptions timersOptions, Action configure) { timersOptions.UseHangfire(); diff --git a/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs b/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs index 139c83b3a..5332c9989 100644 --- a/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs +++ b/src/activities/Elsa.Activities.Temporal.Quartz/Extensions/TimersOptionsExtensions.cs @@ -11,39 +11,51 @@ namespace Elsa { public static class TimersOptionsExtensions { - public static void UseQuartzProvider(this TimersOptions timersOptions, Action? configureOptions = default, Action? configureQuartz = default) + /// + /// Add Elsa Quartz services. + /// + public static void UseQuartzProvider(this TimersOptions timersOptions) { - if (configureOptions != null) - timersOptions.Services.Configure(configureOptions); - else - timersOptions.Services.AddOptions(); - - timersOptions.Services.AddQuartz(configure => ConfigureQuartz(configure, configureQuartz)) - .AddQuartzHostedService(ConfigureQuartzHostedService) + timersOptions.Services .AddSingleton() .AddSingleton() .AddTransient(); } - private static void ConfigureQuartzHostedService(QuartzHostedServiceOptions options) + /// + /// Add Elsa Hangfire Services and Quartz services. + /// + /// + /// Use only if Quartz is not already registered in DI. + /// + public static void UseQuartzProvider( + this TimersOptions timersOptions, + Action configureOptions, + Action? configureQuartz = default, + Action? configureQuartzHostedService = default) + { + timersOptions.UseQuartzProvider(); + timersOptions.Services.Configure(configureOptions); + + timersOptions.Services + .AddQuartz(configure => ConfigureQuartz(configure, configureQuartz)) + .AddQuartzHostedService(options => ConfigureQuartzHostedService(options, configureQuartzHostedService)); + } + + private static void ConfigureQuartzHostedService(QuartzHostedServiceOptions options, Action? configureQuartzHostedService) { options.WaitForJobsToComplete = true; + configureQuartzHostedService?.Invoke(options); } private static void ConfigureQuartz(IServiceCollectionQuartzConfigurator quartz, Action? configureQuartz) { quartz.UseMicrosoftDependencyInjectionScopedJobFactory(options => options.AllowDefaultConstructor = true); quartz.AddJob(job => job.StoreDurably().WithIdentity(nameof(RunQuartzWorkflowJob))); - - if (configureQuartz != null) - { - configureQuartz(quartz); - } - else - { - quartz.UseSimpleTypeLoader(); - quartz.UseInMemoryStore(); - } + quartz.UseSimpleTypeLoader(); + quartz.UseInMemoryStore(); + + configureQuartz?.Invoke(quartz); } } } \ No newline at end of file