安装两个插件:grails install-plugin quartz, grails install-plugin quartz-monitor
我对quartz-monitor做了简单汉化(取消i18n,增加jquery.js,汉化直接在js文件中完成,附件有下载)
创建动态任务
def myTrigger = new CronTriggerImpl() myTrigger.setName("myTrigger_test") myTrigger.setCronExpression('2 * * * * ?') Test1Job.schedule(myTrigger)
创建任务:grails create-job Test1
class Test1Job { static triggers = { } def execute() { // execute job println('hello quartz!') } }
上面的方法,是可以添加简单定时任务,若要给Test1Job传参数,那么写法变成
Test1Job.schedule("cronExpression", Map)
Test1Job {
execute(context)
}
但这种方法,还不清楚如何注入triggerName,因为triggerName是quartz的唯一标记。
查找triggerName
def listJobGroups = quartzScheduler.getJobGroupNames() listJobGroups?.each { jobGroup -> quartzScheduler.getJobKeys(jobGroupEquals(jobGroup))?.each { jobKey -> def jobName = jobKey.name List<Trigger> triggers = quartzScheduler.getTriggersOfJob(jobKey) if (triggers) { triggers.each { trigger -> println("name:" + trigger.key.name) } } } }