Привет мой код работает с несколькими триггеров и я пытаюсь передать определенные параметры, связанные с каждый триггер с помощью jobDataMap.But, когда я пытаюсь присвоить карту в моей конфигурации. заводной к jobDataMap я получаю NullPointerExceptionjobDataMap для передачи параметров для нескольких триггеров в кварце
**This is the Map in my Config.groovy-->**
Query
{
Map
{
time.'0/5 * * * * ?' = ['T1']
time.'0/10 * * * * ?' = ['T2']
templates.'T1' = ['Date','FinshDate','Location']
templates.'T2' = ['TableName']
parameterValues.'T1' = ['2014071600','2014072000','Path']
parameterValues.'T2' = ['AppleData']
}
}
**This is my Quartz Job Code for multiple triggers ->**
import org.quartz.*
import org.quartz.Trigger
import static org.quartz.JobBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;
import org.quartz.impl.StdSchedulerFactory;
import org.codehaus.groovy.grails.commons.GrailsApplication;
public class TrialJob
{
public static void main(String[] args)
{
String JobName
String GroupName
GrailsApplication grailsApplication;
Trigger trigger
def triggerList=[]
def jobList=[]
def cronList=["0/5 * * * * ?","0/10 * * * * ?","0/15 * * * * ?"]
// here i am creating 3 triggers which works fine
for(i in 0..2)
{
JobName="trigger"+Integer.toString(i)
GroupName = "Group"+Integer.toString(i)
println cronList[i]
JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity(JobName,GroupName).build();
trigger= TriggerBuilder.newTrigger().withIdentity(JobName,GroupName).withSchedule(CronScheduleBuilder.cronSchedule(cronList[i])).build();
triggerList.add(trigger)
jobList.add(job)
}
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
for(j in 0..2)
{
// here i want to put the associated parameters for each trigger in the trigger list
// For Example 1) trigger 0--> triggerList[0].jobDataMap.put(['Date','FinshDate','Location'],['2014071600','2014072000','Path'])
// 2) trigger 1--> triggerList[1].jobDataMap.put(['TableName'],['AppleData'])
scheduler.scheduleJob(jobList[j],triggerList[j]);
println "torpido"
println j
}
//while(true){};
}
public static class TestJob implements Job
{
public void execute(JobExecutionContext context) throws JobExecutionException
{
HashMap<String, String> parameter = new HashMap();
parameter=context.getMergedJobDataMap()
println "Inside Execute"
}
}
}
как я использую jobDataMap внутри выше цикла (это было бы более ясно, глядя на комментарии внутри для цикла) и доступ к ним внутри метода выполнения?
привет опал спасибо много снова :) Я мог бы получить несколько триггеров исправлено уже .. Основная проблема, с которой я сталкиваюсь, - это то, что jobDataMap передает конкретные параметры каждому триггеру, прежде чем планировать их. Пожалуйста, взгляните на новый код. – elyon
Вы можете сказать спасибо с помощью upvoting :) Вы можете передать другие объекты с помощью 'usingJobData' при создании триггера - см. Пример, который я предоставил. – Opal
Или .. со следующим фрагментом кода: 'triggerList [j] .jobDataMap.put ('params', ['some', 'list']'. См. API: http://quartz-scheduler.org/ api/2.2.0/org/quartz/JobDataMap.html – Opal