请考虑以下代码:
class MyJob {
def execute() {
println "Hello at->"+new Date()
}
}
当我运行此代码时,它开始每分钟运行而不分配任何触发器。我怎么能禁用这个属性?每当我触发时,我都想开始这项工作。
答案 0 :(得分:2)
如果你想在启动时禁用默认触发器而不是分配触发器,那么你只需要在类中使用空触发器闭包。
class MyJob {
static triggers = { }
...
}
这会将闭包的触发器(无为)分配给作业而不是默认触发器。
答案 1 :(得分:0)
你想要完成的事情有点模糊。如果你想在创建一个触发器时执行它,那么你实际上不需要将它放在一个cron作业中。
但是,如果您想在特定事件后激活此功能。然后你仍然会创建一个触发器,但在执行之前要进行某种检查。实施例
class MyJob {
static triggers = { .... create the schedule
def execute() {
// instead of create a trigger, you create a temp file that would allow/prevent
// the execution
def runIt = new File(runFile.txt)
if (runIt.exists()) {
println "Hello at->"+new Date()
}
}
}
答案 2 :(得分:0)
如果我理解你想做什么,你首先要安装quartz config:
grails install-quartz-config
然后禁用自动启动:
quartz {
autoStartup = false
jdbcStore = false
}
然后在您的应用程序中dynamically schedule the job:
// creates cron trigger;
MyJob.schedule(String cronExpression, Map params?)
// creates simple trigger: repeats job repeatCount+1 times with delay of repeatInterval milliseconds;
MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?) )
// schedules one job execution to the specific date;
MyJob.schedule(Date scheduleDate, Map params?)
//schedules job's execution with a custom trigger;
MyJob.schedule(Trigger trigger)
// force immediate execution of the job.
MyJob.triggerNow(Map params?)