Динамическое перепланирование CronTriggerBean с теми же подробностями работы в Spring - PullRequest
3 голосов
/ 24 января 2011

Моя задача - генерировать отчеты динамически с запланированным временем, указанным пользователем из графического интерфейса.

Я использую следующий код в контексте приложения весной для создания отчета ежедневно в 6 часов утра.

<bean name="scheduleRptJob" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.secant.qatool.report.scheduler.ScheduleCroneJob"/>
</bean>

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="scheduleRptJob" />

<bean id="schedulerFactory"  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="cronTrigger"/>
        </list>
    </property>
</bean>

Я изменяю выражение cron динамически из контроллера со следующим кодом.Но это не работает.

    String time[] = rptScheduleTime.split(":");

    String hours = time[0];
    String minutes = time[1];

    String croneExp = " 00 " + minutes + " " + hours + " * * ? ";

    log.debug("CRONE EXP :: " + croneExp);

    cronTrigger.clearAllTriggerListeners();

    // Setting the crown expression.
    cronTrigger.setCronExpression(croneExp);

    Trigger[] triggers = {cronTrigger};

    // Code to pause and start the cron trigger.
    schedulerFactory.stop();
    schedulerFactory.setTriggers(triggers);
    schedulerFactory.start();

Может кто-нибудь помочь мне, как перенести ту же работу с динамическим временем.

Спасибо,

-Anil Kumar.C

Ответы [ 2 ]

4 голосов
/ 29 января 2011

На весеннем форуме есть ветка об этом, и кажется, что они нашли решение вашей проблемы: http://forum.springsource.org/showthread.php?t=31736

, но вместо того, чтобы вручную изменять выражение cron в файле, вы могли бы использовать язык выражения пружины, чтобы каждый раз читать его из объекта, содержащего значение.

1 голос
/ 29 июня 2011

Я нашел этот поток , где они читают выражение cron из БД и затем перепланируют задание.Вы бы просто не читали его из БД, а передавали его напрямую из GUI, как хотите.

...