0

我正在使用石英 2.x 版本。

我需要TRIGGER_TYPEQRTZ_TRIGGERS表中获取列。

使用API​​,如何获取TRIGGER_TYPE

这是我的代码:

for (String group : scheduler.getTriggerGroupNames()) {
    for (TriggerKey triggerKey : scheduler.getTriggerKeys(GroupMatcher.<TriggerKey>groupEquals(group))) {
        Trigger trigger = scheduler.getTrigger(triggerKey(triggerKey.getName(), triggerKey.getGroup()));
        System.out.println(scheduler.getSchedulerName());
        System.out.println(triggerKey.getName());
        System.out.println(triggerKey.getGroup());
        System.out.println(trigger.getJobKey());
        //job name
        //job group
        System.out.println(trigger.getDescription());
        System.out.println(trigger.getNextFireTime());
        System.out.println(trigger.getPreviousFireTime());
        System.out.println(trigger.getPriority());
        System.out.println(scheduler.getTriggerState(triggerKey(triggerKey.getName(), triggerKey.getGroup())));
        //trigger type
        System.out.println(trigger.getStartTime());
        System.out.println(trigger.getEndTime());
        System.out.println(trigger.getCalendarName());
        System.out.println(trigger.getMisfireInstruction());
    }
}

4

2 回答 2

0

有 2 种触发器类型,SimpleTrigger 和 CronTrigger。

也许看看他们的API。您可能会在那里获得有关如何区分两者的线索。

于 2017-04-17T10:44:15.310 回答
0

中的TRIGGER_TYPE信息在QRTZ_TRIGGERS运行时反映在Trigger实现的特定 Java 类型中:

  • CalendarIntervalTriggerImpl-> TTYPE_CAL_INT,
  • CronTriggerImpl-> TTYPE_CRON,
  • DailyTimeIntervalTriggerImpl->TTYPE_DAILY_TIME_INT
  • SimpleTriggerImpl-> TTYPE_SIMPLE

自定义类型还有一个默认的触发器Trigger类型:TTYPE_BLOB.

请注意,如果您真的想在运行时访问该信息,最好使用以下代码:

TriggerPersistenceDelegate tDel = new StdJDBCDelegate().findTriggerPersistenceDelegate(trigger);

String type = TTYPE_BLOB;
if(tDel != null)
  type = tDel.getHandledTriggerTypeDiscriminator();
于 2017-04-18T10:34:04.533 回答