我怎么告诉Quartz?我想做三个表达式,例如“如果它是一个工作日”,“如果它是一个星期一”,“如果它是一个星期一”,“如果它是一个星期一”,“如果它是一个星期一”,但我不能合并月份的日期和星期的日期字段(我总是得到一个无效的cron表达式错误)
我认为您不能用一个简单的cron表达式做到这一点,但是您可以使用下面的解决方案。
首先使用典型的Cron触发器安排作业
CronScheduleBuilder sh = cronSchedule("0 0 0 10 * ?");
TriggerBuilder<Trigger> tb = newTrigger()
.withSchedule(sh)
.withIdentity("MyTrigger");
然后安排好你的扳机。然后创建一个Quartz TriggerListener来实现你的机制
public class MyTriggerListener implements TriggerListener {
[...]
@Override
public void vetoJobExecution(Trigger trigger, JobExecutionContext context) {
// You check if it is your Cron Trigger
if ("MyTrigger".equals(trigger.getKey.getName()) {
Calendar cal = Calendar.getInstance();
// If current date is sunday, then another one-time trigger
// is created to delay the job firing
if (Calendar.SUNDAY.equals(cal.get(Calendar.DAY_OF_WEEK))) {
cal.add(Calendar.DATE, 1); // One day later
TriggerBuilder<Trigger> tb = newTrigger()
.startAt(cal.getTime());
.withIdentity("MyTrigger_delayed");
.forJob(context.getJobDetail());
// TODO schedule it in Quartz the way you want
// like : scheduler.scheduleJob(tb.build());
return true; // The current fire is vetoed
}
// If current date is saturday, then another one-time trigger
// is created to delay the job firing
else if (Calendar.SATURDAY.equals(cal.get(Calendar.DAY_OF_WEEK))) {
cal.add(Calendar.DATE, 2); // Two day later
TriggerBuilder<Trigger> tb = newTrigger()
.startAt(cal.getTime());
.withIdentity("MyTrigger_delayed");
.forJob(context.getJobDetail());
// TODO schedule it in Quartz the way you want
// like : scheduler.scheduleJob(tb.build());
return true;// The current fire is vetoed
}
// If it is a weekday, the job fires normally
else {
return false;
}
}
// It is not your Cron Trigger
return false;
}
}
TriggerListener myTriggerListener = new MyTriggerListener("MyTriggerListener");
scheduler.getListenerManager().addTriggerListener(myTriggerListener, allTriggers());
我使用石英调度和Spring Batch,我需要在每个月的最后一个星期四运行一个特定的工作。 有可能创建这样的Quartz cron表达式吗? 谢谢
我在表单模板中设置了一张表单,在a列中有数据提示,如姓名、ID#等,在B列中输入了实际数据。我创建了一个标记为“提交表单”的按钮,该按钮链接到脚本。我希望这个脚本实现的是只复制列B中特定范围的数据,然后将该数据粘贴到新工作表中的下一个空行中,以创建表单响应的某种数据库。它还将清除原始工作表B列中的数据范围。 我已经有一种方法可以清除原始工作表上的选定范围,也有一种方法可以将选定范围复制到新工作表,
我想安排一个任务在每个月的最后一天上午10:10运行。cron表达式是
试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误
Quartz 的Cron任务调度表达式一般人很难理解,在Googole上查询也没有发现类似的代码,所以开发了一个对Quartz Cron 表达式的可视化双向解析和生成的一个java的GUI程序,供使用Quartz的程序员参考和使用,源代码放在SourceForge网站
null 上个月的第一天和本月的第一天 上月1日和本月第3个工作日 当前星期的星期一日期和当前星期的staturday日期。