diff --git a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs index 06702f138d..cad1e94aa3 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Quartz/Volo/Abp/BackgroundJobs/Quartz/QuartzJobExecutionAdapter.cs @@ -32,12 +32,6 @@ namespace Volo.Abp.BackgroundJobs.Quartz public async Task Execute(IJobExecutionContext context) { - if (!Options.IsJobExecutionEnabled) - { - Logger.LogWarning("Background jobs system is disabled"); - return; - } - using (var scope = ServiceScopeFactory.CreateScope()) { var args = (TArgs) context.JobDetail.JobDataMap.Get(nameof(TArgs)); diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs index b536ee9389..baf3fc1973 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/IQuartzBackgroundWorker.cs @@ -1,4 +1,6 @@ -using Quartz; +using System; +using System.Threading.Tasks; +using Quartz; namespace Volo.Abp.BackgroundWorkers.Quartz { @@ -9,5 +11,7 @@ namespace Volo.Abp.BackgroundWorkers.Quartz IJobDetail JobDetail { get; set; } bool AutoRegister { get; set; } + + Func ScheduleJob { get; set; } } } diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs index 00e03af15a..307e6b6676 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerBase.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Quartz; namespace Volo.Abp.BackgroundWorkers.Quartz @@ -10,6 +11,8 @@ namespace Volo.Abp.BackgroundWorkers.Quartz public IJobDetail JobDetail { get; set; } public bool AutoRegister { get; set; } = true; + + public Func ScheduleJob { get; set; } = null; public abstract Task Execute(IJobExecutionContext context); } diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs index 4bdaca9f6c..35359b1d27 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerManager.cs @@ -41,17 +41,29 @@ namespace Volo.Abp.BackgroundWorkers.Quartz Check.NotNull(quartzWork.Trigger, nameof(quartzWork.Trigger)); Check.NotNull(quartzWork.JobDetail, nameof(quartzWork.JobDetail)); - if (await _scheduler.CheckExists(quartzWork.JobDetail.Key)) + if (quartzWork.ScheduleJob != null) { - await _scheduler.AddJob(quartzWork.JobDetail, true, true); - await _scheduler.ResumeJob(quartzWork.JobDetail.Key); - await _scheduler.RescheduleJob(quartzWork.Trigger.Key, quartzWork.Trigger); + await quartzWork.ScheduleJob.Invoke(_scheduler); } else { - await _scheduler.ScheduleJob(quartzWork.JobDetail, quartzWork.Trigger); + await DefaultScheduleJobAsync(quartzWork); } } } + + protected virtual async Task DefaultScheduleJobAsync(IQuartzBackgroundWorker quartzWork) + { + if (await _scheduler.CheckExists(quartzWork.JobDetail.Key)) + { + await _scheduler.AddJob(quartzWork.JobDetail, true, true); + await _scheduler.ResumeJob(quartzWork.JobDetail.Key); + await _scheduler.RescheduleJob(quartzWork.Trigger.Key, quartzWork.Trigger); + } + else + { + await _scheduler.ScheduleJob(quartzWork.JobDetail, quartzWork.Trigger); + } + } } } \ No newline at end of file