Пример #1
0
 /// <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);
 }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        /// <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);
        }