All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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 JobExecutionContexts, 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 JobListeners and TriggerListeners. * * @return Returns the jobRunTime. */ public long getJobRunTime(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy