/** * @return composite data */ public static CompositeData toCompositeData(JobExecutionContext jec) throws SchedulerException { try { return new CompositeDataSupport(COMPOSITE_TYPE, ITEM_NAMES, new Object[] { jec.getScheduler().getSchedulerName(), jec.getTrigger().getKey().getName(), jec.getTrigger().getKey().getGroup(), jec.getJobDetail().getKey().getName(), jec.getJobDetail().getKey().getGroup(), JobDataMapSupport.toTabularData(jec .getMergedJobDataMap()), jec.getTrigger().getCalendarName(), jec.isRecovering(), jec.getRefireCount(), jec.getFireTime(), jec.getScheduledFireTime(), jec.getPreviousFireTime(), jec.getNextFireTime(), jec.getJobRunTime(), jec.getFireInstanceId() }); } catch (OpenDataException e) { throw new RuntimeException(e); } }
class CustomTriggerListener extends TriggerListenerSupport { private JobExecutionContext lastJobExecutionContext; @Override public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { boolean vetoExecution = false; if (lastJobExecutionContext == null) { lastJobExecutionContext = context; } else { boolean lastJobIsDone = lastJobExecutionContext.getJobRunTime() >= 0; if (lastJobIsDone) { lastJobExecutionContext = context; } else { vetoExecution = true; } } return vetoExecution; } @Override public String getName() { return "CustomTriggerListener"; } }
public void jobWasExecuted (@Nonnull final JobExecutionContext aContext, final JobExecutionException aJobException) { final Object aResult = aContext.getResult (); final long nRuntimeMilliSecs = aContext.getJobRunTime (); final String sMsg = "Job was executed: " + getJobName (aContext) + (aResult == null ? "" : "; result=" + aResult) + "; duration=" + nRuntimeMilliSecs + "ms"; if (aJobException == null) s_aLogger.info (sMsg); else s_aLogger.error (sMsg, aJobException); } }
<initialize JobListeners> public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) { try { jobKey = context.getJobDetail().getKey(); schedulerName = context.getScheduler().getSchedulerName(); jobName = jobKey.getName(); groupName = jobKey.getGroup(); //execution Date startDate = context.getFireTime(); //execution time long runTime=context.getJobRunTime(); //execution end long endDateM = startDate.getTime() + runTime; Date endDate = new Date(endDateM); //get more information here } catch (Exception e) { e.printStackTrace(); }
@Override public synchronized void jobEnds(JobExecution execution, JobExecutionContext context) { execution.setEndDate(new DateTime(context.getFireTime()) .plusMillis((int) context.getJobRunTime()).toDate()); execution.setEnded(true); }
@Override public void triggerComplete(Trigger trigger, JobExecutionContext context, CompletedExecutionInstruction triggerInstructionCode) { Date complete = Date.from(context.getFireTime().toInstant().plusMillis(context.getJobRunTime())); eventManager.createTriggerEvent (TriggerEvent.TRIGGER_EVENT_TYPE.COMPLETE, context.getJobDetail().getKey(), trigger.getKey(), complete, "Trigger complete", getServerId()); }
@Override public void triggerComplete(Trigger trigger, JobExecutionContext context, CompletedExecutionInstruction triggerInstructionCode) { Date complete = Date.from(context.getFireTime().toInstant().plusMillis(context.getJobRunTime())); eventManager.createTriggerEvent (TriggerEvent.TRIGGER_EVENT_TYPE.COMPLETE, context.getJobDetail().getKey(), trigger.getKey(), complete, "Trigger complete", getServerId()); }
@Override public Long getValue() { if (unregistered) { return -1L; } if (!active) { unregister(); return -1L; // quartzscheduler is no longer active, unregister } if (jobExecutionContext.getJobRunTime() != -1) { unregister(); return -1L; // job is finished, unregister automatically } final Date oldestDate = jobExecutionContext.getFireTime(); if (oldestDate == null) { // never fired? this should not happen - but unregister to be // safe unregister(); return -1L; } else { return System.currentTimeMillis() - oldestDate.getTime(); } } }
@Override protected void populateInitialHeaders(Map<String, Object> map) { super.populateInitialHeaders(map); if (jobExecutionContext != null) { map.put("calendar", jobExecutionContext.getCalendar()); map.put("fireTime", jobExecutionContext.getFireTime()); map.put("jobDetail", jobExecutionContext.getJobDetail()); map.put("jobInstance", jobExecutionContext.getJobInstance()); map.put("jobRunTime", jobExecutionContext.getJobRunTime()); map.put("mergedJobDataMap", jobExecutionContext.getMergedJobDataMap()); map.put("nextFireTime", jobExecutionContext.getNextFireTime()); map.put("previousFireTime", jobExecutionContext.getPreviousFireTime()); map.put("refireCount", jobExecutionContext.getRefireCount()); map.put("result", jobExecutionContext.getResult()); map.put("scheduledFireTime", jobExecutionContext.getScheduledFireTime()); map.put("scheduler", jobExecutionContext.getScheduler()); Trigger trigger = jobExecutionContext.getTrigger(); map.put("trigger", trigger); map.put("triggerName", trigger.getName()); map.put("triggerGroup", trigger.getGroup()); } }
/** * Log information. * * @param jobExecutionContext * @throws JobExecutionException */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { logger.debug("JobInstance: {}", jobExecutionContext.getJobInstance()); logger.debug("JobRunTime: {}", jobExecutionContext.getJobRunTime()); logger.debug("FireTime: {}", jobExecutionContext.getFireTime()); logger.debug("NextFireTime: {}", jobExecutionContext.getNextFireTime()); logger.debug("PreviousFireTime: {}", jobExecutionContext.getPreviousFireTime()); logger.debug("ScheduledFireTime: {}", jobExecutionContext.getScheduledFireTime()); logger.debug("RefireCount: {}", jobExecutionContext.getRefireCount()); logger.debug("Recovering: {}", jobExecutionContext.isRecovering()); logger.debug("Calendar: {}", jobExecutionContext.getCalendar()); logger.debug("FireInstanceId: {}", jobExecutionContext.getFireInstanceId()); logger.debug("Scheduler: {}", jobExecutionContext.getScheduler()); logger.debug("MergedJobDataMap: {}", jobExecutionContext.getMergedJobDataMap().getWrappedMap()); logger.debug("JobDetail: {}", jobExecutionContext.getJobDetail()); logger.debug("Trigger: {}", jobExecutionContext.getTrigger()); logger.info("Job {} has been executed.", jobExecutionContext.getJobDetail().getKey()); }
@Override protected void populateInitialHeaders(Map<String, Object> map) { super.populateInitialHeaders(map); if (jobExecutionContext != null) { map.put("calendar", jobExecutionContext.getCalendar()); map.put("fireTime", jobExecutionContext.getFireTime()); map.put("jobDetail", jobExecutionContext.getJobDetail()); map.put("jobInstance", jobExecutionContext.getJobInstance()); map.put("jobRunTime", jobExecutionContext.getJobRunTime()); map.put("mergedJobDataMap", jobExecutionContext.getMergedJobDataMap()); map.put("nextFireTime", jobExecutionContext.getNextFireTime()); map.put("previousFireTime", jobExecutionContext.getPreviousFireTime()); map.put("refireCount", jobExecutionContext.getRefireCount()); map.put("result", jobExecutionContext.getResult()); map.put("scheduledFireTime", jobExecutionContext.getScheduledFireTime()); map.put("scheduler", jobExecutionContext.getScheduler()); Trigger trigger = jobExecutionContext.getTrigger(); map.put("trigger", trigger); map.put("triggerName", trigger.getKey().getName()); map.put("triggerGroup", trigger.getKey().getGroup()); } }
@Override public void jobEnds(JobExecution execution, JobExecutionContext context) { String sql = "update " + getTableName() + " set endDate = :endDate, ended = :ended, result = :result where id = :id"; SqlParameterSource params = new MapSqlParameterSource() .addValue("endDate", new DateTime(context.getFireTime()).plusMillis((int) context.getJobRunTime()).toDate()) .addValue("ended", true) .addValue("result", execution.getResult().name()) .addValue("id", execution.getId()); jdbcTemplate.update(sql, params); }
if (context.getJobRunTime() != -1) { if (this.metricSettings.isEnableTriggerGauges()) { gaugeService.submit(triggerKey, Long.valueOf(context.getJobRunTime()).doubleValue()); gaugeService.submit(jobKey, Long.valueOf(context.getJobRunTime()).doubleValue());
SchedulingContextImpl(JobExecutionContext context) { taskName = context.getJobDetail().getKey().getName(); storeDurably = context.getJobDetail().isDurable(); requestRecovery = context.getJobDetail().requestsRecovery(); scheduledFireDate = context.getScheduledFireTime(); currentFireDate = context.getFireTime(); previousFireDate = context.getPreviousFireTime(); nextFireDate = context.getNextFireTime(); taskRuntime = context.getJobRunTime(); triggerRefireCount = context.getRefireCount(); triggerEndDate = context.getTrigger().getEndTime(); triggerFinalFireDate = context.getTrigger().getFinalFireTime(); triggerName = context.getTrigger().getKey().getName(); triggerStartDate = context.getTrigger().getStartTime(); triggerPriority = context.getTrigger().getPriority(); }
@Override public void triggerComplete(Trigger trgr, JobExecutionContext jec, CompletedExecutionInstruction cei) { try { addEntry(new FireHistoryEntry( jec.getScheduler().getSchedulerName(), jec.getTrigger() .getKey(), jec.getJobDetail().getKey(), jec.getScheduledFireTime(), jec.getFireTime(), jec .getScheduler().getTriggerState( jec.getTrigger().getKey()), jec.getJobRunTime(), jec.getTrigger().getJobDataMap())); } catch (SchedulerException ex) { ex.printStackTrace(); } }
/** * @return composite data */ public static CompositeData toCompositeData(JobExecutionContext jec) throws SchedulerException { try { return new CompositeDataSupport(COMPOSITE_TYPE, ITEM_NAMES, new Object[] { jec.getScheduler().getSchedulerName(), jec.getTrigger().getKey().getName(), jec.getTrigger().getKey().getGroup(), jec.getJobDetail().getKey().getName(), jec.getJobDetail().getKey().getGroup(), JobDataMapSupport.toTabularData(jec .getMergedJobDataMap()), jec.getTrigger().getCalendarName(), jec.isRecovering(), jec.getRefireCount(), jec.getFireTime(), jec.getScheduledFireTime(), jec.getPreviousFireTime(), jec.getNextFireTime(), jec.getJobRunTime(), jec.getFireInstanceId() }); } catch (OpenDataException e) { throw new RuntimeException(e); } }
if (jec.getTrigger().equals(trigger)) { triggerInfo.setRunning(true); triggerInfo.setRunTime(jec.getJobRunTime()); break;
if(jec.getTrigger().equals(trigger)) { triggerInfo.setRunning(true); triggerInfo.setRunTime(jec.getJobRunTime()); break;