|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.quartz.Trigger
org.quartz.CronTrigger
A concrete
that is used to fire a
Trigger
at given moments in time, defined with Unix
'cron-like' definitions.JobDetail
For those unfamiliar with "cron", this means being able to create a firing schedule such as: "At 8:00am every Monday through Friday" or "At 1:30am every last Friday of the month".
A "Cron-Expression" is a string comprised of 6 or 7 fields separated by
white space. The 6 mandatory and 1 optional fields are as follows:
Field Name | Allowed Values | Allowed Special Characters | ||
---|---|---|---|---|
Seconds |
0-59 |
, - * / |
||
Minutes |
0-59 |
, - * / |
||
Hours |
0-23 |
, - * / |
||
Day-of-month |
1-31 |
, - * ? / L C |
||
Month |
1-12 or JAN-DEC |
, - * / |
||
Day-of-Week |
1-7 or SUN-SAT |
, - * ? / L C # |
||
Year (Optional) |
empty, 1970-2099 |
, - * / |
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". You can also specify '/' after the '*' character - in this case '*' is equivalent to having '0' before the '/'.
The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".
The legal characters and the names of months and days of the week are not case sensitive.
Here are some full examples:
Expression | Meaning | |
---|---|---|
"0 0 12 * * ?" |
Fire at 12pm (noon) every day |
|
"0 15 10 ? * *" |
Fire at 10:15am every day |
|
"0 15 10 * * ?" |
Fire at 10:15am every day |
|
"0 15 10 * * ? *" |
Fire at 10:15am every day |
|
"0 15 10 * * ? 2005" |
Fire at 10:15am every day during the year 2005 |
|
"0 * 14 * * ?" |
Fire every minute starting at 2pm and ending at 2:59pm, every day |
|
"0 0/5 14 * * ?" |
Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day |
|
"0 0/5 14,18 * * ?" |
Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day |
|
"0 0-5 14 * * ?" |
Fire every minute starting at 2pm and ending at 2:05pm, every day |
|
"0 10,44 14 ? 3 WED" |
Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. |
|
"0 15 10 ? * MON-FRI" |
Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday |
|
"0 15 10 15 * ?" |
Fire at 10:15am on the 15th day of every month |
|
"0 15 10 L * ?" |
Fire at 10:15am on the last day of every month |
|
"0 15 10 ? * 6L" |
Fire at 10:15am on the last Friday of every month |
|
"0 15 10 ? * 6L" |
Fire at 10:15am on the last Friday of every month |
|
"0 15 10 ? * 6L 2002-2005" |
Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 |
|
"0 15 10 ? * 6#3" |
Fire at 10:15am on the third Friday of every month |
Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!
NOTES:
Trigger
,
SimpleTrigger
,
Serialized FormField Summary | |
static int |
MISFIRE_INSTRUCTION_DO_NOTHING
Instructs the that upon a mis-fire
situation, the wants to have it's
next-fire-time updated to the next time in the schedule after the
current time (taking into account any associated
, but it does not want to be fired now. |
static int |
MISFIRE_INSTRUCTION_FIRE_ONCE_NOW
Instructs the that upon a mis-fire
situation, the wants to be fired now by
Scheduler . |
Fields inherited from class org.quartz.Trigger |
INSTRUCTION_DELETE_TRIGGER, INSTRUCTION_NOOP, INSTRUCTION_RE_EXECUTE_JOB, INSTRUCTION_SET_ALL_JOB_TRIGGERS_COMPLETE, INSTRUCTION_SET_TRIGGER_COMPLETE, MISFIRE_INSTRUCTION_SMART_POLICY, STATE_COMPLETE, STATE_ERROR, STATE_NONE, STATE_NORMAL, STATE_PAUSED |
Constructor Summary | |
CronTrigger()
Create a CronTrigger with no settings. |
|
CronTrigger(java.lang.String name,
java.lang.String group)
Create a CronTrigger with the given name and group. |
|
CronTrigger(java.lang.String name,
java.lang.String group,
java.lang.String jobName,
java.lang.String jobGroup)
Create a CronTrigger with the given name and group,
and associated with the identified . |
|
CronTrigger(java.lang.String name,
java.lang.String group,
java.lang.String jobName,
java.lang.String jobGroup,
java.util.Date startTime,
java.util.Date endTime,
java.lang.String cronExpression)
Create a CronTrigger that will occur at the given
time, until the given end time. |
|
CronTrigger(java.lang.String name,
java.lang.String group,
java.lang.String jobName,
java.lang.String jobGroup,
java.util.Date startTime,
java.util.Date endTime,
java.lang.String cronExpression,
java.util.TimeZone timeZone)
Create a CronTrigger with fire time dictated by the cronExpression
resolved with respect to the specified timeZone occuring from the startTime
until the given endTime . |
|
CronTrigger(java.lang.String name,
java.lang.String group,
java.lang.String jobName,
java.lang.String jobGroup,
java.lang.String cronExpression)
Create a CronTrigger with the given name and group,
associated with the identified , and with
the given "cron" expression. |
|
CronTrigger(java.lang.String name,
java.lang.String group,
java.lang.String jobName,
java.lang.String jobGroup,
java.lang.String cronExpression,
java.util.TimeZone timeZone)
Create a CronTrigger with the given name and group,
associated with the identified , and with
the given "cron" expression resolved with respect to the TimeZone . |
Method Summary | |
java.util.Date |
computeFirstFireTime(Calendar calendar)
Called by the scheduler at the time a Trigger is first
added to the scheduler, in order to have the Trigger compute
its first fire time, based on any associated calendar. |
int |
executionComplete(JobExecutionContext context,
JobExecutionException result)
Called after the has executed the
associated with the Trigger in order
to get the final instruction code from the trigger. |
java.lang.String |
getCronExpression()
|
java.util.Date |
getEndTime()
Get the time at which the CronTrigger should quit
repeating - even if repeastCount isn't yet satisfied. |
java.lang.String |
getExpressionSummary()
|
java.util.Date |
getFinalFireTime()
Returns the final time at which the CronTrigger will
fire. |
java.util.Date |
getFireTimeAfter(java.util.Date afterTime)
Returns the next time at which the CronTrigger will
fire, after the given time. |
int |
getLastDayOfMonth(int monthNum,
int year)
|
java.util.Date |
getNextFireTime()
Returns the next time at which the CronTrigger will
fire. |
java.util.Date |
getPreviousFireTime()
Returns the previous time at which the CronTrigger will
fire. |
java.util.Date |
getStartTime()
Get the time at which the CronTrigger should
occur. |
java.util.TimeZone |
getTimeZone()
Returns the time zone for which the cronExpression
of this CronTrigger will be resolved. |
boolean |
isLeapYear(int year)
|
static void |
main(java.lang.String[] args)
|
boolean |
mayFireAgain()
Determines whether or not the CronTrigger will occur
again. |
void |
setCronExpression(java.lang.String cronExpression)
|
void |
setEndTime(java.util.Date endTime)
|
void |
setNextFireTime(java.util.Date nextFireTime)
Sets the next time at which the CronTrigger will
fire. |
void |
setPreviousFireTime(java.util.Date previousFireTime)
Set the previous time at which the SimpleTrigger fired. |
void |
setStartTime(java.util.Date startTime)
|
void |
setTimeZone(java.util.TimeZone timeZone)
Sets the time zone for which the cronExpression
of this CronTrigger will be resolved. |
void |
triggered(Calendar calendar)
Called when the has decided to 'fire'
the trigger (execute the associated Job ), in order to give
the Trigger a chance to update itself for its next
triggering (if any). |
void |
updateAfterMisfire(Calendar cal)
Updates the CronTrigger 's state based on the
MISFIRE_INSTRUCTION_XXX that was selected when the
SimpleTrigger was created. |
protected boolean |
validateMisfireInstruction(int misfireInstruction)
|
boolean |
willFireOn(java.util.Calendar test)
Determines whether the date & time of the given Calendar instance falls on a scheduled fire-time of this trigger. |
Methods inherited from class org.quartz.Trigger |
addTriggerListener, clone, compareTo, equals, getCalendarName, getDescription, getFireInstanceId, getFullJobName, getFullName, getGroup, getJobGroup, getJobName, getMisfireInstruction, getName, getTriggerListenerNames, isVolatile, removeTriggerListener, setCalendarName, setDescription, setFireInstanceId, setGroup, setJobGroup, setJobName, setMisfireInstruction, setName, setVolatility, toString, validate |
Methods inherited from class java.lang.Object |
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int MISFIRE_INSTRUCTION_FIRE_ONCE_NOW
Instructs the
that upon a mis-fire
situation, the Scheduler
wants to be fired now by
CronTrigger
Scheduler
.
public static final int MISFIRE_INSTRUCTION_DO_NOTHING
Instructs the
that upon a mis-fire
situation, the Scheduler
wants to have it's
next-fire-time updated to the next time in the schedule after the
current time (taking into account any associated
CronTrigger
, but it does not want to be fired now.Calendar
Constructor Detail |
public CronTrigger()
Create a CronTrigger
with no settings.
public CronTrigger(java.lang.String name, java.lang.String group)
Create a CronTrigger
with the given name and group.
public CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup)
Create a CronTrigger
with the given name and group,
and associated with the identified
.JobDetail
public CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.lang.String cronExpression) throws java.text.ParseException
Create a CronTrigger
with the given name and group,
associated with the identified
, and with
the given "cron" expression.JobDetail
public CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.lang.String cronExpression, java.util.TimeZone timeZone) throws java.text.ParseException
Create a CronTrigger
with the given name and group,
associated with the identified
, and with
the given "cron" expression resolved with respect to the JobDetail
TimeZone
.
public CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.util.Date startTime, java.util.Date endTime, java.lang.String cronExpression) throws java.text.ParseException
Create a CronTrigger
that will occur at the given
time, until the given end time.
startTime
- A Date
set to the time for the
Trigger
to fire.endTime
- A Date
set to the time for the
Trigger
to quit repeat firing.public CronTrigger(java.lang.String name, java.lang.String group, java.lang.String jobName, java.lang.String jobGroup, java.util.Date startTime, java.util.Date endTime, java.lang.String cronExpression, java.util.TimeZone timeZone) throws java.text.ParseException
Create a CronTrigger
with fire time dictated by the cronExpression
resolved with respect to the specified timeZone
occuring from the startTime
until the given endTime
.
name
- of the Trigger
group
- of the Trigger
startTime
- A Date
set to the earliest time for the
Trigger
to start firing.endTime
- A Date
set to the time for the
Trigger
to quit repeat firing.
java.text.ParseException
- if the cronExpression
is invalid.Method Detail |
public void setCronExpression(java.lang.String cronExpression) throws java.text.ParseException
java.text.ParseException
public java.lang.String getCronExpression()
public java.util.Date getStartTime()
Get the time at which the CronTrigger
should
occur.
getStartTime
in class Trigger
public void setStartTime(java.util.Date startTime)
public java.util.Date getEndTime()
Get the time at which the CronTrigger
should quit
repeating - even if repeastCount isn't yet satisfied.
getEndTime
in class Trigger
getFinalFireTime()
public void setEndTime(java.util.Date endTime)
public java.util.Date getNextFireTime()
Returns the next time at which the CronTrigger
will
fire. If the trigger will not fire again, null
will be
returned. The value returned is not guaranteed to be valid until after the
Trigger
has been added to the scheduler.
getNextFireTime
in class Trigger
public java.util.Date getPreviousFireTime()
Returns the previous time at which the CronTrigger
will
fire. If the trigger has not yet fired, null
will be
returned.
getPreviousFireTime
in class Trigger
public void setNextFireTime(java.util.Date nextFireTime)
Sets the next time at which the CronTrigger
will
fire. This method should not be invoked by client code.
public void setPreviousFireTime(java.util.Date previousFireTime)
Set the previous time at which the SimpleTrigger
fired.
This method should not be invoked by client code.
public java.util.TimeZone getTimeZone()
Returns the time zone for which the cronExpression
of this CronTrigger
will be resolved.
public void setTimeZone(java.util.TimeZone timeZone)
Sets the time zone for which the cronExpression
of this CronTrigger
will be resolved.
public java.util.Date getFireTimeAfter(java.util.Date afterTime)
Returns the next time at which the CronTrigger
will
fire, after the given time. If the trigger will not fire after the
given time, null
will be returned.
Note that the date returned is NOT validated against the related org.quartz.Calendar (if any)
getFireTimeAfter
in class Trigger
public java.util.Date getFinalFireTime()
Returns the final time at which the CronTrigger
will
fire.
Note that the return time *may* be in the past. and the date returned is not validated against org.quartz.calendar
getFinalFireTime
in class Trigger
public boolean mayFireAgain()
Determines whether or not the CronTrigger
will occur
again.
mayFireAgain
in class Trigger
protected boolean validateMisfireInstruction(int misfireInstruction)
validateMisfireInstruction
in class Trigger
public void updateAfterMisfire(Calendar cal)
Updates the CronTrigger
's state based on the
MISFIRE_INSTRUCTION_XXX that was selected when the
SimpleTrigger
was created.
If the misfire instruction is set to MISFIRE_INSTRUCTION_SMART_POLICY,
then the following scheme will be used:
MISFIRE_INSTRUCTION_DO_NOTHING
updateAfterMisfire
in class Trigger
public boolean willFireOn(java.util.Calendar test)
Determines whether the date & time of the given Calendar instance falls on a scheduled fire-time of this trigger.
Note that the date returned is NOT validated against the related org.quartz.Calendar (if any)
public int executionComplete(JobExecutionContext context, JobExecutionException result)
Called after the
has executed the
Scheduler
associated with the JobDetail
Trigger
in order
to get the final instruction code from the trigger.
executionComplete
in class Trigger
context
- is the JobExecutionContext
that was used by
the Job
's execute(xx)
method.result
- is the JobExecutionException
thrown by the
Job
, if any (may be null).
Trigger.INSTRUCTION_NOOP
,
Trigger.INSTRUCTION_RE_EXECUTE_JOB
,
Trigger.INSTRUCTION_DELETE_TRIGGER
,
Trigger.INSTRUCTION_SET_TRIGGER_COMPLETE
,
triggered(Calendar)
public void triggered(Calendar calendar)
Called when the
has decided to 'fire'
the trigger (execute the associated Scheduler
Job
), in order to give
the Trigger
a chance to update itself for its next
triggering (if any).
triggered
in class Trigger
executionComplete(JobExecutionContext, JobExecutionException)
public java.util.Date computeFirstFireTime(Calendar calendar)
Called by the scheduler at the time a Trigger
is first
added to the scheduler, in order to have the Trigger
compute
its first fire time, based on any associated calendar.
After this method has been called, getNextFireTime()
should return a valid answer.
computeFirstFireTime
in class Trigger
Trigger
will be fired by
the scheduler, which is also the same value getNextFireTime()
will return (until after the first firing of the Trigger
).public java.lang.String getExpressionSummary()
public boolean isLeapYear(int year)
public int getLastDayOfMonth(int monthNum, int year)
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |