2014-02-26 37 views
4

我正在使用Spring Quartz Job Scheduler來在用戶選定日期內運行作業。而不是自動調用作業調度程序時,應用程序啓動我需要AA特定用戶動作的作業調度程序開始運行使Spring Quartz Job Scheduler在用戶動作上運行

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

<bean id="testme" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail"> 
      <ref bean="testme1"/> 
     </property> 
     <property name="cronExpression"> 
      <value>0 15 10 1,15 * ?</value> 
     </property> 
</bean> 

此外,我需要首先用戶選擇他需要運行作業例如日期:星期一及星期五然後點擊提交按鈕後,調度程序將從該點開始?所以它的cronExpression值也會根據用戶選擇的日期而改變。用戶可以稍後將其更改爲不同的日期。那麼是否有可能做到這一點,或者Quartz Job Scheduler不是實現我需要的方法嗎?

+0

調度運行indenpendently創造就業機會,應該已經啓動。然後,用戶操作將使用適當的觸發器創建一個作業(在Quartz文檔中搜索CronTriggers以獲取重複事件)。 – Julien

回答

0

嘗試以編程方式獲得您的CronTriggerBean對象testme
並將其設置爲所需的cronExpression。我認爲這應該起作用。

0

調度程序將在啓動時運行。正如朱利安所說,關鍵是在用戶採取行動時創建作業或觸發器。

更多的用戶可以稍後將其更改爲不同的日期。那麼 可能做到這一點,或者做Quartz Job Scheduler是不是方法 來實現我所需要的?

石英可以做到這一點。你只需要重新安排工作。

您可以將SchedulerFactoryBean的一個實例自動裝入您自己的bean中。從SchedulerFactoryBean來,你可以得到調度,並根據需要調整工作的觸發器或創造新的就業機會/觸發:

Scheduler scheduler = schedulerFactory.getScheduler(); 
JobDetail job = scheduler.getJobDetail("yourJobName", "yourJobGroup"); 

// possibly do some stuff with the JobDetail... 

// get the current trigger 
CronTrigger cronTrigger = (CronTrigger) scheduler.getTrigger("yourTriggerName", "yourTriggerGroupName"); 

// possibly do some stuff with the current Trigger... 
if (cronTrigger != null) 
    something.doSomeStuff(); 

// replace the old trigger with a new one. unless your users are sysadmins, they 
// probably don't want to enter cron-type entries. there are other trigger types 
// besides CronTrigger. RTFM and pick the best one for your needs 
CronTrigger newTrigger = new CronTrigger(); 
newTrigger.setName("newTriggerName"); 
newTrigger.setGroup("yourTriggerGroup"); 
newTrigger.setCronExpression("valid cron exp here"); 

// the new trigger must reference the job by name and group 
newTrigger.setJobName("yourJobName"); 
newTrigger.setJobGroup("yourJobGroup"); 

// replace the old trigger. this is by name, make sure it all matches up. 
scheduler.rescheduleJob("yourJobName", "yourTriggerGroup", newTrigger); 
相關問題