Quartz adding task Scheduling

Source: Internet
Author: User
Tags current time time interval

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 {}}



Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.