More About Simple Trigger

Simple trigger can be used to one shot execution or fire a job and in other words, we can say that just a single execution of job to the specified time.

More About Simple Trigger

More About Simple Trigger

     

Simple trigger can be used to one shot execution or fire a job and in other words, we can say that just a single execution of job to the specified time. Sometimes, we wish to execute or fire a job at the specified time that has till 'N' repetition times with delay between 'T' executions of jobs that means if you need to have a job execute exactly once at a specific time, or at a specific moment in time that is followed by repeats at a specified time interval.

The SimpleTrigger properties contains: a start-time and end-time, a repeat count and a repeat interval. The repeat count properties can be zero, a positive integer or the constant value SimpleTrigger.REPEAT_INDEFINITELY. The repeat interval property must be zero or a positive long value that represents a number of milliseconds. The end-time property over-rides the repeat count property that can be used for creating a trigger which fires every some specified time (20 seconds). It has to compute the number of times that would be repeated between the start-time and end-time, if we want to specify the end-time then we can use a repeat count of REPEAT_INDEFINITELY.

We are going to implement a SimpleTrigger constructor to following types:

public SimpleTrigger(String name, String group, Date startTime, Date endTime, int repeatCount, long repeatInterval);
 
This is the constructor of java.org.quartz.SimpleTrigger class. Which fires or executes at the specified time and repeat at the specified number of times. It takes following arguments like this:

    name: This is the name of Simple Trigger.
  group:
This is the name of scheduler group.
  startTime: 
This is the time for firing or executing the Trigger.
  endTime:
This is the time for the Trigger to drop repeat firing or executing. 
  repeatCount:
This is the number of repeat firing or executing the Trigger by using the REPEAT_INDEFINITELY  for no any foundation of time.
  repeatInterval:
This is the time (milliseconds) for stopping or pausing the repeat firing.

There are following examples for implementing the SimpleTrigger:

1. Example SimpleTrigger : Create a simple trigger which fires exactly once, 20 seconds from now:

long startTime = System.currentTimeMillis() + (20L*1000L);

SimpleTrigger strigger  =  new SimpleTrigger("mySimpleTrigger", sched.DEFAULT_GROUP, new Date(startTime), null, 0, 0L);

2. Example SimpleTrigger : Create a simple trigger that fires quickly and repeats every 20 seconds:

SimpleTrigger strigger  =  new SimpleTrigger("mySimpleTrigger", sched.DEFAULT_GROUP, new Date(), null, SimpleTrigger.REPEAT_INDEFINITELY, 20L * 1000L);

3. Example SimpleTrigger: Create a Simple Trigger that fires quickly and repeats every 10 seconds until 50 seconds from now:

long endTime = System.currentTimeMillis() + (50L * 1000L);

SimpleTrigger strigger  =  new SimpleTrigger("mySimpleTrigger", sched.DEFAULT_GROUP, new Date(), new Date(endTime), SimpleTrigger.REPEAT_INDEFINITELY, 10L * 1000L);

4. Example SimpleTrigger: Create a Simple Trigger that fires on February 19 of the year 2007 at accurately 9:15 am, and repeats 10 times with 20 seconds delay between each firing.

java.util.Calendar cal = new java.util.GregorianCalendar(2007,cal.FEB, 19);
cal.set(cal.HOUR, 9);
cal.set(cal.MINUTE, 15);
cal.set(cal.SECOND, 0);
cal.set(cal.MILLISECOND, 0);

Data startTime = cal.getTime();

SimpleTrigger trigger = new SimpleTrigger("mySimpleTrigger", sched.DEFAULT_GROUP, startTime, 10, 20L*1000L);

Simple Trigger Misfire Instructions

When the misfire instruction occurs then what should to do the Quartz. There are following misfire instructions to use for informing the Quartz.

  MISFIRE_INSTRUCTION_FIRE_NOW

     MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT

   MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT

   MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT

   MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_EXISTING_COUNT

Here is the also mis-fire instruction that have used for all trigger types:

   Trigger.MISFIRE_INSTRUCTION_SMART_POLICY

When we will use the "smart policy" misfire instruction with the triggers then the SimpleTrigger determine between its various types of mis-fire instructions that depends upon the configuration and state of the specified SimpleTrigger instance. The JavaDOC has the SimpleTrigger.updateAfterMisfire() method that describes the brief description of this dynamic behavior.