
org.quartz.core.JobExecutionContext Maven / Gradle / Ivy
/*
* All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
package org.quartz.core;
import java.util.Date;
import org.quartz.jobs.Job;
import org.quartz.jobs.JobDataMap;
import org.quartz.jobs.JobDetail;
import org.quartz.listeners.JobListener;
import org.quartz.listeners.TriggerListener;
import org.quartz.triggers.Trigger;
/**
* A context bundle containing handles to various environment information, that is given to a {@link org.quartz.jobs.JobDetail}
instance
* as it is executed, and to a {@link Trigger}
instance after the execution completes.
*
* The JobDataMap
found on this object (via the getMergedJobDataMap()
method) serves as a convenience - it is a merge of the
* JobDataMap
found on the JobDetail
and the one found on the Trigger
, with the value in the latter overriding
* any same-named values in the former. It is thus considered a 'best practice' that the execute code of a Job retrieve data from the JobDataMap
* found on this object NOTE: Do not expect value 'set' into this JobDataMap to somehow be set back onto a StatefulJob
's own
* JobDataMap.
*
*
* JobExecutionContext
s are also returned from the Scheduler.getCurrentlyExecutingJobs()
method. These are the same
* instances as those passed into the jobs that are currently executing within the scheduler. The exception to this is when your application is using
* Quartz remotely (i.e. via RMI) - in which case you get a clone of the JobExecutionContext
s, and their references to the
* Scheduler
and Job
instances have been lost (a clone of the JobDetail
is still available - just not a handle
* to the job instance that is running).
*
*
* @see #getScheduler()
* @see #getMergedJobDataMap()
* @see #getJobDetail()
* @see Job
* @see Trigger
* @see JobDataMap
* @author James House
*/
public interface JobExecutionContext {
/**
*
* Get a handle to the Scheduler
instance that fired the Job
.
*
*/
public Scheduler getScheduler();
/**
*
* Get a handle to the Trigger
instance that fired the Job
.
*
*/
public Trigger getTrigger();
/**
*
* Get a handle to the Calendar
referenced by the Trigger
instance that fired the Job
.
*
*/
public Calendar getCalendar();
/**
*
* If the Job
is being re-executed because of a 'recovery' situation, this method will return true
.
*
*/
public boolean isRecovering();
public int getRefireCount();
/**
*
* Get the convenience JobDataMap
of this execution context.
*
*
* The JobDataMap
found on this object serves as a convenience - it is a merge of the JobDataMap
found on the
* JobDetail
and the one found on the Trigger
, with the value in the latter overriding any same-named values in the
* former. It is thus considered a 'best practice' that the execute code of a Job retrieve data from the JobDataMap found on this object.
*
*
* NOTE: Do not expect value 'set' into this JobDataMap to somehow be set back onto a StatefulJob
's own JobDataMap.
*
*
* Attempts to change the contents of this map typically result in an IllegalStateException
.
*
*/
public JobDataMap getMergedJobDataMap();
/**
*
* Get the JobDetail
associated with the Job
.
*
*/
public JobDetail getJobDetail();
/**
*
* Get the instance of the Job
that was created for this execution.
*
*
* Note: The Job instance is not available through remote scheduler interfaces.
*
*/
public Job getJobInstance();
/**
* The actual time the trigger fired. For instance the scheduled time may have been 10:00:00 but the actual fire time may have been 10:00:03 if the
* scheduler was too busy.
*
* @return Returns the fireTime.
* @see #getScheduledFireTime()
*/
public Date getFireTime();
/**
* The scheduled time the trigger fired for. For instance the scheduled time may have been 10:00:00 but the actual fire time may have been 10:00:03
* if the scheduler was too busy.
*
* @return Returns the scheduledFireTime.
* @see #getFireTime()
*/
public Date getScheduledFireTime();
public Date getPreviousFireTime();
public Date getNextFireTime();
/**
* Returns the result (if any) that the Job
set before its execution completed (the type of object set as the result is entirely up to
* the particular job).
*
* The result itself is meaningless to Quartz, but may be informative to {@link JobListener}s
or {@link TriggerListener}s
* that are watching the job's execution.
*
*
* @return Returns the result.
*/
public Object getResult();
/**
* Set the result (if any) of the Job
's execution (the type of object set as the result is entirely up to the particular job).
*
* The result itself is meaningless to Quartz, but may be informative to {@link JobListener}s
or {@link TriggerListener}s
* that are watching the job's execution.
*
*/
public void setResult(Object result);
/**
* The amount of time the job ran for (in milliseconds). The returned value will be -1 until the job has actually completed (or thrown an
* exception), and is therefore generally only useful to JobListener
s and TriggerListener
s.
*
* @return Returns the jobRunTime.
*/
public long getJobRunTime();
}