2012-06-29 32 views
0

在我的情況下,客戶可以安排一份工作。正如我所看到的,石英通常使用cronExpression來執行計劃。但有很多客戶有很多時間表,我不能寫很多觸發器豆,因爲我不知道有多少時間表是真的,這取決於客戶。那麼,有人會幫忙嗎?我該如何運行幾個使用石英彈簧配置的日程表

+0

您應該區分觸發器和作業的定義,許多作業可以使用相同的觸發器。真正的問題是什麼? – Thinhbk

+0

然後,您應該爲不同的客戶端動態重新創建作業的觸發器。 [實施例](http://darthanthony.wordpress.com/2009/07/07/dynamic-scheduling-with-javaspring/)。 – nobeh

+0

「按上述方法連接一個SchedulerFactoryBean,我們將使用這個有線的Spring服務來創建我們的時間表。」這是必要的,如上例中所述。那麼StdSchedulerFactory.getDefaultScheduler();呢? – user1450233

回答

0

Quartz旨在在運行時添加和刪除作業和觸發器。 Spring是一個退化的案例,所有觸發器和作業都是在啓動時定義的。在石英,具有Scheduler實例時,你可以輕鬆地創建,瀏覽和你的願望,例如從How-To: Scheduling a Job刪除觸發器:

// Define job instance 
JobDetail job1 = newJob(ColorJob.class) 
    .withIdentity("job1", "group1") 
    .build(); 

// Define a Trigger that will fire "now", and not repeat 
Trigger trigger = newTrigger() 
    .withIdentity("trigger1", "group1") 
    .startNow() 
    .build(); 

// Schedule the job with the trigger 
schedulder.scheduleJob(job, trigger); 

official documentation,尤其是cookbook

作業之間(一張包裹在一個類別碼應該被執行)和一個觸發器(在其下執行的作業時間條件)亦區分。請記住,默認情況下,當與作業(作業可能有多個觸發器)關聯的最後一個觸發器觸發時,作業將從調度程序中刪除。