2012-02-28 12 views
0

石英API提供一种方式,我可以创建一个作业,并添加它通过执行类似添加在Quartz调度触发以备日后使用

SchdularFactory.getSchedulerInstance().addJob(jobDetail, false); 

这为我提供了灵活的创建到调度以备将来使用作业使用调度程序存储它们,并在稍后阶段使用它们。 我想知道有没有什么办法可以创建触发器并将它们添加到调度程序中以供将来使用。

不知道这是否是有效的要求,但如果它不能比所有我需要做的是将触发与任何特定/现有的工作联系起来

回答

3

石英有就业之间存在一个一对多的关系和触发器,这是可以理解的:一个作业可以通过几个不同的触发器来运行,但一个触发器只能运行一个作业。如果您需要运行多个作业,请创建一个手动运行这些作业的复合作业。

回到你的问题。创建一个没有关联触发器的作业是一个有效的用例:你有一个逻辑,然后你将附加一个或多个触发器在不同的时间点执行它。

相反的情况很奇怪 - 你想创建一个触发器,在给定的时间运行一些东西,但你还不知道是什么。我无法想象使用情况。

请注意,您可以创建一个触发器以备将来使用(将来的下一次着火时间),但它必须附带一个作业。

最后,在官方文档中查看How-To: Storing a Job for Later Use

+0

感谢您的澄清。请您解释“创建一个手动运行这些作业的复合作业”是什么意思? – 2012-02-28 13:20:40

+0

@ user702325:这不是真的关系到你的问题,它只是脱离主题。我的意思是说Quartz不能通过一个触发器来运行多个作业,所以如果你真的需要这样做(你需要通过同一个触发器运行'Job1'和'Job2'),你必须创建'CompositeJob',它只需调用'Job1.execute()'和'Job2.eecute()'。 – 2012-02-28 13:26:45