我有一個Quartz Job,我可以使用一些Cron Trigger進行調度。Quartz Scheduler - 只更新JobDataMap,作業之間
ReportSchedule reportSchedule = ... // my object
JobDetail jobDetail = new JobDetail(reportSchedule.getScheduleName(),
reportSchedule.getScheduleGroup(),
ExtendedReportJob.class /* my job */);
jobDetail.getJobDataMap().put("reportSchedule", reportSchedule);
jobDetail.setDescription(reportSchedule.getScheduleDescription());
CronTrigger trigger = ...; // depends on the report schedule
scheduler.scheduleJob(jobDetail, trigger);
此代碼成功地工作和細節寫入到數據庫。
reportSchedule
對象包含作業所需的特定參數。但是,我可能想要更改參數。
我可以
scheduler.deleteJob(name, group);
scheduler.scheduleJob(jobDetail, trigger);
// where jobDetail.getJobDataMap() has the updated reportSchedule
這樣做做到這一點,但是,將觸發作業就因爲觸發取決於該報告的日程,我不想改變它(我想保持原來的日期)。所以我的問題:有沒有辦法修改作業之間的JobDetail
或JobDataMap
而不更改Trigger
?
我正在使用Quartz 1.6.0。
是的,這就是我一開始做的。但是,當您計劃一項新工作時,它會執行一些計算來改變觸發器上的NextFireTime,並且在我的情況下它會將其設置爲過去,從而重新觸發它。我今天晚些時候會發布我的解決方案。 – 2013-04-12 16:43:39