目录
一. JobExecutionContext
/**
* 一个包含着大量环境信息的处理的上下文簇,当JobDetail被执行的时候,这个上下文传递给JobDetail,
* 并且在执行完成的时候传递给Trigger实例
*
* JobExecutionContext也是由Scheduler.getCurrentlyExecutionJobs()方法返回的。 *
*/
public interface JobExecutionContext {
/**
* 获取调度器
*/
public Scheduler getScheduler();
/**
* 获取触发器
*/
public Trigger getTrigger();
/**
* 获取由Trigger引用的Calendar
*/
public Calendar getCalendar();
/**
* 如果工作因为恢复而重新执行,这个方法返回true
*/
public boolean isRecovering();
public TriggerKey getRecoveringTriggerKey() throws IllegalStateException;
public int getRefireCount();
public JobDataMap getMergedJobDataMap();
/**
* 获取JobDetail
*/
public JobDetail getJobDetail();
/**
* 获取Job实例
*
* 注意: Job实例在远程调度器中不可用
*/
public Job getJobInstance();
/**
* 实际的触发器启动的时间。
*/
public Date getFireTime();
/**
* 触发器启动工作的时间。
*/
public Date getScheduledFireTime();
public Date getPreviousFireTime();
public Date getNextFireTime();
/**
* 获取唯一的ID。它标识着触发器启动的实例。这对于这个JobExecutionContext也是唯一的。
*/
public String getFireInstanceId();
/**
* 返回Job在完成之前设置的结果
*
* 这个结果对于Quartz是无意义的,但是对于JobListener和TriggerListener是有意义的。
*/
public Object getResult();
/**
* 设置Job的执行结果。
*
* 这个结果对于Quartz是无意义的,但是对于JobListener和TriggerListener是有意义的。
*/
public void setResult(Object result);
/**
* job运行的时长。当job已经完成或者抛出一个异常,返回的值为-1。这个值对于JobListener和TriggerListener是有用的。
*/
public long getJobRunTime();
/**
* 将指定的键和值放到上下文数据集合中
*/
public void put(Object key, Object value);
/**
* 获取上下文数据集合中给定键的值
*/
public Object get(Object key);
}
二. TriggerKey
/**
* 表示一个job或者trigger key的对象
*/
public class Key<T> implements Serializable, Comparable<Key<T>> {
private static final long serialVersionUID = -7141167957642391350L;
/**
* The default group for scheduling entities, with the value "DEFAULT".
*/
public static final String DEFAULT_GROUP = "DEFAULT";
private final String name;
private final String group;
public Key(String name, String group) {
if(name == null)
throw new IllegalArgumentException("Name cannot be null.");
this.name = name;
if(group != null)
this.group = group;
else
this.group = DEFAULT_GROUP;
}
public String getName() {
return name;
}
public String getGroup() {
return group;
}
@Override
public String toString() {
return getGroup() + '.' + getName();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((group == null) ? 0 : group.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
@SuppressWarnings("unchecked")
Key<T> other = (Key<T>) obj;
if (group == null) {
if (other.group != null)
return false;
} else if (!group.equals(other.group))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public int compareTo(Key<T> o) {
if(group.equals(DEFAULT_GROUP) && !o.group.equals(DEFAULT_GROUP))
return -1;
if(!group.equals(DEFAULT_GROUP) && o.group.equals(DEFAULT_GROUP))
return 1;
int r = group.compareTo(o.getGroup());
if(r != 0)
return r;
return name.compareTo(o.getName());
}
public static String createUniqueName(String group) {
if(group == null)
// “default”
group = DEFAULT_GROUP;
String n1 = UUID.randomUUID().toString();
String n2 = UUID.nameUUIDFromBytes(group.getBytes()).toString();
return String.format("%s-%s", n2.substring(24), n1);
}
}
/**
* 唯一标识 {@link Trigger}.
*
*/
public final class TriggerKey extends Key<TriggerKey> {
private static final long serialVersionUID = 8070357886703449660L;
public TriggerKey(String name) {
super(name, null);
}
public TriggerKey(String name, String group) {
super(name, group);
}
public static TriggerKey triggerKey(String name) {
return new TriggerKey(name, null);
}
public static TriggerKey triggerKey(String name, String group) {
return new TriggerKey(name, group);
}
}
三. JobDetail
/**
* 表示一个给定Job实例的细节属性。JobDetails是由JobBuilder创建的或者定义的
*
* Quartz没有存储Job的实际实例,但是可以通过JobDetail,定义一个实例
*
* Job有一个名字和组,两者唯一标识Job
*
* Trigger是Job被执行的机制。许多Triggers可以指向相同的Job。但是一个Trigger只能指向一个Job
*/
public interface JobDetail extends Serializable, Cloneable {
public JobKey getKey();
/**
* 返回描述
*/
public String getDescription();
/**
* 获取Job
*/
public Class<? extends Job> getJobClass();
/**
* 获取跟Job关联的JobDataMap
*/
public JobDataMap getJobDataMap();
/**
* 没有Trigger指向Job,Job是否应该持久化
* 如果明确设置,默认是<code>false</code>.
*/
public boolean isDurable();
/**
* 关联的Job类是否携带{@link PersistJobDataAfterExecution}注解
*/
public boolean isPersistJobDataAfterExecution();
/**
* 关联的Job类是否携带{@link DisallowConcurrentExecution}注解
*/
public boolean isConcurrentExectionDisallowed();
/**
* 指示Scheduler是否应该在'recovery'或者'fail-over'情形下,重新执行
* 如果没有明确设置,默认的值是false
*/
public boolean requestsRecovery();
public Object clone();
/**
* 获取一个JobBuilder。JobBuilder是用来配置来生产一个JobDetail。
*/
public JobBuilder getJobBuilder();
}
来源:CSDN
作者:等後那场雪
链接:https://blog.csdn.net/qq_34561892/article/details/103964137