Package com.lec.util.job;
Import java.text.ParseException;
Import Java.util.Date;
Import Java.util.HashMap;
Import Org.quartz.CronTrigger;
Import Org.quartz.Job;
Import Org.quartz.JobDetail;
Import Org.quartz.Scheduler;
Import org.quartz.SchedulerException;
Import Org.quartz.SchedulerFactory;
Import Org.quartz.SimpleTrigger;
Import Org.quartz.Trigger;
Import Org.quartz.impl.StdSchedulerFactory;
Import Com.lec.assurance.utils.StringHandler; /** * Crontrigger Task Scheduler * @author LCY * DEC 1, +/public class Crontriggerrunner {private static Schedulerfactor
Y SF = new stdschedulerfactory (); /** * Query a task based on Task name and task Group name * @param jobName * @param jobgroupname * @return * @throws schedulerexception */publi C Static Jobdetail getjob (String jobname,string jobgroupname) throws schedulerexception{Scheduler sched = Sf.getschedul
ER ();
Jobdetail Jobdetail=sched.getjobdetail (JobName, jobgroupname);
if (jobdetail! = null) {return jobdetail;
} return null; }
/* * Add a crontrigger Timer task * @param jobName Task Name * @param jobgroupname Task Group name * @param triggername Trigger name * @param TRIGGERGR
Oupname Trigger Group Name * @param Job Task * @param time setting, refer to Quartz documentation * @param params pass parameter * @throws schedulerexception * @throws ParseException */public static void AddJob (String jobname,string jobgroupname,string triggername, Strin G triggergroupname,string time,hashmap<string,object> params, Job jobclass) throws Schedulerexception, ParseExce
ption{Scheduler sched = Sf.getscheduler ();
Jobdetail jobdetail = new Jobdetail (JobName, Jobgroupname, Jobclass.getclass ());//Task Name, Task Group, Task execution class if (params! = null) {
Jobdetail.getjobdatamap (). Put ("params", params); }//Trigger Crontrigger Trigger = new Crontrigger (triggername, triggergroupname);//trigger name, trigger group Trigger.setcronexpres
Sion (time);//Trigger Set Sched.schedulejob (Jobdetail,trigger);
if (!sched.isshutdown ()) Sched.start (); }/** * Add a simpletrigger Timer task * @param jObname Task Name * @param jobgroupname Task Group name * @param triggername Trigger name * @param triggergroupname trigger Group name * @param startTime Start time * @param repeatinterval interval * @param repeatcount number of calls * @param jobclass task * @param params pass parameter * @throws Schedulerexception */public static void AddJob (String jobname,string jobgroup, string triggername,string Trigg Ergroup,date startTime, Integer repeatinterval,integer repeatcount,job jobclass, hashmap<string,object> params
) throws schedulerexception{Jobdetail jobdetail = new Jobdetail (JobName, Jobgroup, Jobclass.getclass ());
if (params! = null) {Jobdetail.getjobdatamap (). Put ("params", params);
}//Trigger Simpletrigger Simpletrigger = new Simpletrigger (triggername, Triggergroup);
Set start time Simpletrigger.setstarttime (StartTime);
Set interval time simpletrigger.setrepeatinterval (repeatinterval);
Set number of calls Simpletrigger.setrepeatcount (RepeatCount); Scheduler sched = Sf.getScheduler ();
Sched.schedulejob (Jobdetail,simpletrigger);
if (!sched.isshutdown ()) Sched.start (); /** * Modify the trigger time for a task based on Task name and task Group name * @param jobName Task Name * @param jobgroupname Task Group name * @param time * @throws Schedulere
Xception * @throws parseexception */public static void Modifyjobtime (String jobname,string jobgroupname,string time)
Throws Schedulerexception, parseexception{Scheduler sched = Sf.getscheduler ();
trigger[] Trigger = Sched.gettriggersofjob (jobname,jobgroupname); if (trigger! = null) {for (int i=0;i<trigger.length;i++) {((Crontrigger) trigger[i]). Setcronexpression (Tim
e);
Sched.resumetrigger (Trigger[i].getname (), Trigger[i].getgroup ()); }}}/** * Modify the trigger time of a task based on the trigger name * @param triggername Trigger name * @param triggergroupname trigger Group name * @param time * @th Rows schedulerexception * @throws parseexception */public static void Modifytriggertime (String triggername,string trig
Gergroupname, String time) throws Schedulerexception, parseexception{Scheduler sched = Sf.getscheduler ();
Trigger Trigger = Sched.gettrigger (triggername,triggergroupname);
if (trigger! = NULL) {//modified ((Crontrigger) trigger). Setcronexpression (time);
Restart trigger Sched.resumetrigger (triggername,triggergroupname); }}/** * Remove task * @param jobname Task Name * @param jobgroupname Task Group name * @param triggergroupname trigger Group name * @throws Schedulerex Ception */public static void Removejob (String jobname,string jobgroupname,string triggergroupname) throws Scheduler
exception{Scheduler sched = Sf.getscheduler ();
string[] Triggernames = Sched.gettriggernames (triggergroupname); if (Triggernames!=null) {for (int i=0;i<triggernames.length;i++) {Sched.pausetrigger (Triggernames[i],triggergrou PName);//Stop Trigger Sched.unschedulejob (triggernames[i],triggergroupname);//Remove Trigger}} sched.deletejob (Jobname,j Obgroupname);//Delete Task}/** * Remove a task * @param jobname Task Name * @param jobgroupname Task Group name * @param triggername Trigger name * @param triggergroupname trigger Group name * @thro WS Schedulerexception */public static void Removejob (String jobname,string jobgroupname, string triggername,string t
Riggergroupname) throws schedulerexception{Scheduler sched = Sf.getscheduler (); Sched.pausetrigger (triggername,triggergroupname);//Stop Trigger Sched.unschedulejob (triggername,triggergroupname);// Remove trigger Sched.deletejob (jobname,jobgroupname);//Delete Task}/** * To stop a task it is important to note that the job to be stopped here must be the implementation of the Interruptablejob * @para M JobName * @param jobgroupname * @throws schedulerexception * * public static void Stopjob (String jobname,string Jo
Bgroupname) throws Schedulerexception {Scheduler sched = Sf.getscheduler ();
Sched.interrupt (JobName, jobgroupname); /** * Calculates the time expression * @param second seconds * @param minute minutes * @param hour * @param Day date * @
Param month * @param week week * @param year* @param iscontactyear Whether the year is included * @return */public static string Getcexpress (String second,string minute,string hour,
String day,string month,string week,string Year,boolean iscontactyear) {string cexpress= "";
Seconds, the default is "0" value range: 0-59 if (STRINGHANDLER.ISVALIDSTR (second)) {Cexpress+=integer.parseint (second) + "";
}else{cexpress+= "0"; }/** * Range of values: 0-59 * The default is "*" for every Minute * If 0 12 indicates a full 12:00 trigger * If 0/5 12 indicates every 5 minutes from 12 o'clock in the afternoon to 12:55 every day
, * If 0-5 12 indicates every 1 minutes from 12:00 to 12:05 * If it is 10,15 12 means 12:10 and 12:15 trigger */if (STRINGHANDLER.ISVALIDSTR (minute)) {
Cexpress+=minute+ "";
}else{cexpress+= "*"; /** * Hour value range: 0-23 * The default is "*" for every one hours * If 0 indicates a morning trigger * if it is 0-5 hours to 5:00 * If the 10,15 table
Indication 10:00 and 15:00 trigger */if (STRINGHANDLER.ISVALIDSTR (hour)) {cexpress+=hour+ "";
}else{cexpress+= "*"; }/** * Date value range: 1-31 * The default is "*" for every day * If 15 means 15th number per month * If L represents the last day of each month * Note: When the date is specified in the week,This is set to "?"
*/if (STRINGHANDLER.ISVALIDSTR (day)) {cexpress+=day+ "";
}else{cexpress+= "*"; /** * Month Value range: 1-12 * The default is "*" for each month * If 12 means December */if (STRINGHANDLER.ISVALIDSTR (month)) {Cexpre
Ss+=month+ "";
}else{cexpress+= "*";
/** * Week value range: 1-7 Mon,tue,wed,thu,fri,sat,sun where 1 means Sunday, and so on * default = "?" * If wed represents each Wednesday * if it is Mon-fri represents Monday to Friday * If it is 6L represents the last Friday of the month * If it is 6#3 represents the third Friday/if (Strin
GHANDLER.ISVALIDSTR (week)) {cexpress+=week+ ""; }else{cexpress+= "?
"; }//If include year if (iscontactyear) {/** * year value range: 1970-2099 * Default value is null * if 2010 means only 2010-YEAR trigger time * if it is 2010
, 2020 means only */if (STRINGHANDLER.ISVALIDSTR (year)) {cexpress+=year;
}} return cexpress; The public static void main (String [] args) {try {* * *--------------------creates a job that executes at a specified time-----------------------*/J Obdetail jobdetail = new Jobdetail ("Fundsrecord_jobname_folkholdersid1", "FUndsrecord_jobgroupname_folkholdersid1 ", Fundsrecordjob.class);
①-1: Create Crontrigger, specify group and name Crontrigger Crontrigger = new Crontrigger ("Fundsrecord_triggername_folkholdersid1",
"Fundsrecord_triggergroupname_folkholdersid1");
①-2: Define cron expression String timeexp = "";
String second = "0";
String minute = "15";
String hour = "0";
String day = "L";//The End of the month string month = "";
String week = "?";
month = "6,12";
Timeexp = getcexpress (second, minute, hour, day, month, week, NULL, false); if (! " 0 * * * *?.
Equals (Timeexp)) {//Do not perform cronexpression cexp = new Cronexpression (timeexp) If no time is set;
①-3: Set cron expression crontrigger.setcronexpression (cexp);
Scheduler Scheduler = Sf.getscheduler ();
Scheduler.schedulejob (Jobdetail, Crontrigger);
Scheduler.start (); }/*--------------------create a job with a time interval to execute-----------------------*/String JobName = "Fundsrecord_jobname_folkholdersid2";
String jobgroupname = "Fundsrecord_jobgroupname_folkholdersid2";
String triggername = "Fundsrecord_triggername_folkholdersid2";
String triggergroupname = "Fundsrecord_triggergroupname_folkholdersid2";
Date BeginTime = new Date (System.currenttimemillis () + 60000L);//The current time is 60 seconds after the beginning of the Integer Repeatinterval = 5000;//in milliseconds
Integer repeatcount = 0;
hashmap<string, object> map = new hashmap<string,object> ();
Map.put ("Folkholdersid", "2");
try {crontriggerrunner.addjob (jobname,jobgroupname,triggername, Triggergroupname,begintime,repeatinterval,
Repeatcount,new fundsrecordjob (), map);
} catch (Schedulerexception e) {//TODO auto-generated catch block E.printstacktrace ();
}} catch (Exception e) {e.printstacktrace ();
}
}
}
Package com.lec.util.job;
Import Java.util.HashMap;
Import Org.quartz.InterruptableJob;
Import Org.quartz.JobDataMap;
Import Org.quartz.JobExecutionContext;
Import org.quartz.JobExecutionException;
Import org.quartz.SchedulerException;
Import org.quartz.UnableToInterruptJobException; /** * Task Scheduler * @author LCY * *, * * * * public class Fundsrecordjob implements Interruptablejob {@Override pub LIC void execute (Jobexecutioncontext context) throws Jobexecutionexception {Jobdatamap map = Context.getmergedjobdatama
P ();
Object obj = map.get ("params");
if (obj! = null) {hashmap<string,object> params = (hashmap<string,object>) obj;
Dojob ();//The method that needs to be executed in this task Scheduler Long Folkholdersid = Long.parselong ((String) params.get ("Folkholdersid")); try {crontriggerrunner.stopjob ("Fundsrecord_jobname_folkholdersid" +folkholdersid, "fundsrecord_jobgroupname_fol Kholdersid "+folkholdersid);//Stop This Job} catch (Schedulerexception e) {//TODO auto-generatedCatch block E.printstacktrace ();
}}} public void Interrupt () throws Unabletointerruptjobexception {}}