Quartz Trigger状态转换

在Quartz的框架中,Trigger可能是最重要的一个对象了。定时任务的调度,触发,都是通过对Trigger的操作来实现的。Quartz的所有表里面,光Trigger相关的表就占了一大半,从这一点也可以看出Trigger的重要地位。下面是2.21版本中的数据表:
Quartz Trigger状态转换
Trigger按其类型不同,分作了SIMPLE、CRON、BLOB等类型,数据库中也有相应的表存储。除此之外,QRTZ_TRIGGERS和QRTZ_FIRED_TRIGGERS是两张存储Trigger调度状态的表。对于状态转换的掌握,有助于我们 更好的理解Quartz的调度机制。

要通过文字讲清Trigger状态转换很难,而一张好图胜过千言万语。下面是整理的Trgger状态转换图,为了更好的突出重点,避免增加复杂度,这里仅描述了正常流程下的默认状态转换,忽略掉了集群恢复(clusterRecover)和部分手动更改任务计划(例如调用removeJob(),resumeJob()等)导致的状态转换。
Quartz Trigger状态转换
建议读者边对照这张图边翻看源码,可以达到事半功倍的效果。