config.groovy - >
Query
{
Map{
time.'Tue Dec 30 14:48:00 EST 2014' = ['T1']
time.'Wed Dec 30 14:44:00 EST 2014' = ['T2']
templates.'T1' = ['P1','P2','P3']
templates.'T2' = ['Table']
}
}
Query
{
parameterValuesMap
{
parameterValues.'T1' = ['2014071600','2014072000','segment_id_file']
parameterValues.'T2' = ['Elyon']
}
}
QuartzJob.groovy - >
import org.codehaus.groovy.grails.commons.GrailsApplication;
class MultipleJob
{
GrailsApplication grailsApplication;
static triggers = {
cron name: 'MultipleJobs', cronExpression: "* * * * * ?"
}
def execute()
{
HashMap<String, String> parameter = new HashMap();
grailsApplication.config.ais.Query.Map.time.each
{ k, v ->
if(currentTime=="${k}")
{
String templateId=v[0]
parameterKey = grailsApplication.config.Query.Map.templates.getAt("${v[0]}")
parameterValue = grailsApplication.config.Query.parameterValuesMap.parameterValues.getAt("${v[0]}")
for(int j=0;j<parameterKey.size();j++)
{
parameter.put(parameterKey[j],parameterValue[j])
}
log.info(mediaQueryClient.executeQuery("0", templateId,"arbit", parameter))
}
}
}
}
我想分别在2014年东部时间12月30日14:48:00和2014年12月30日14:44:00 2014年T1和T2的不同时间执行相同的execute()方法(我总共有25个这样的模板并且所有都有不同的执行时间,无法通过单个cron表达式表示)有人可以提供一些示例代码,以便我如何在不同时间继续执行它们,我不知道应该保留什么cron表达式因为工作可能不会周期性地分开,因此我不能像每15分钟那样拥有一般的cron表达式?我们也可以在一个石英作业中创建多个cron表达式吗?请提供一些示例代码
1 回答
两次基本上同样的问题让我得到了它,但我想我看到你想要做的事情 .
您似乎已将my answer to your previous question中的一两项建议纳入其中;随意接受它作为正确的答案:)你真的需要停止滥用GString表达式 - 你只是让事情变得更难 .
我稍微修改了Config.groovy的东西:
并将Quartz代码更改为: