/// <summary> /// 新增作业 /// </summary> /// <param name="jobName">作业名称</param> /// <param name="dicParams">作业参数集合</param> /// <returns>是否添加成功</returns> public static bool AddJob(string jobName, IDictionary <string, string> dicParams) { if (!string.IsNullOrEmpty(jobName)) { string jobCnName = JobStatus.None.ToString(); if (jobs.ContainsKey(jobName)) { if (jobs[jobName] != null) { return(true); } else { jobs.Remove(jobName); JobStruct jobstruct = Instance(jobName, jobCnName, dicParams); if (jobstruct != null) { jobs.Add(jobName, jobstruct); return(true); } } } else { JobStruct jobstruct = Instance(jobName, jobCnName, dicParams); if (jobstruct != null) { jobs.Add(jobName, jobstruct); StartJob(jobName); return(true); } } } return(false); }
/// <summary> /// 初始化作业 /// </summary> /// <param name="JobName">作业名称</param> /// <param name="JobStatus">作业状态</param> /// <param name="dicParams">作业参数结合</param> /// <returns>初始化作业</returns> private static JobStruct Instance(string JobName, string JobStatus, IDictionary <string, string> dicParams) { try { //为作业结构体赋值 JobStruct jobStruct = new JobStruct(); jobStruct.JobName = JobName; jobStruct.JobStatus = JobStatus; jobStruct.dicParams = dicParams; //初始化调度器工厂 NameValueCollection nvc = new NameValueCollection(); nvc.Add("quartz.scheduler.instanceName", JobName + "_SchedulerInstanceName"); ISchedulerFactory schedulerFactory = new StdSchedulerFactory(nvc); jobStruct.sched = schedulerFactory.GetScheduler(); IJobDetail jobDetail = null; //初始化作业器 jobDetail = new JobDetailImpl(JobName, JobName + "Group", Type.GetType("QuartzJob.QuartzHelper.JobDetails")); jobDetail.JobDataMap.Add("JobExecute", JobName); jobDetail.JobDataMap.Add("JobParam", dicParams); //初始化作业触发器 string cronExpr = dicParams["CronExpr"];//触发周期,采用配置模式,针对不同的作业新增配置不同的周期 ITrigger trigger = new CronTriggerImpl(JobName + "Trigger", JobName + "Group", JobName, JobName + "Group", cronExpr); jobStruct.sched.ScheduleJob(jobDetail, trigger); return(jobStruct); } catch (Exception ex) { //记录错误 Log4NetHelper.WriteExceptionLog("Instance作业初始化异常:" + ex.Message.Replace("\n", "")); return(null); } }
/// <summary> /// 移除作业 /// </summary> /// <param name="jobName">作业名称</param> /// <returns>是否移除</returns> public static bool RemoveJob(string jobName) { if (string.IsNullOrEmpty(jobName)) { return(false); } bool isHasRemove = false; if (jobs.ContainsKey(jobName)) { JobStruct jobStruct = jobs[jobName]; if (jobStruct != null && jobStruct.sched != null && !jobStruct.sched.IsShutdown)//判断作业是否存在并且是否还活动着 { jobStruct.sched.Shutdown(false); } isHasRemove = jobs.Remove(jobName); } return(isHasRemove); }