2017-04-17 59 views
0

我使用石英2.x版本。石英2.x,如何獲得觸發器類型?

我需要從QRTZ_TRIGGERS表中獲得列TRIGGER_TYPE

使用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()); 
 
    } 
 
}

+0

什麼是石英文件不得不說一下訪問TRIGGER_TYPE?你有嘗試過像'SELECT TRIGGER_TYPE FROM QRTZ_TRIGGERS'嗎? – lit

+0

我想導入它使用API​​而不是從數據庫導入,但我可以將其他值導入API,但我找不到獲取TRIGGER_TYPE的API。你知道嗎? – zeronine09

+0

改進的語法和格式 – Sampada

回答

0

有2種觸發類型,SimpleTrigger和CronTrigger。

也許看看他們的API。您可能會在那裏找到關於如何區分兩者的線索。

0

QRTZ_TRIGGERSTRIGGER_TYPE信息是在運行時在特定Java類型Trigger執行反映:

  • 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();