/// <summary> /// 添加数据 /// </summary> /// <param name="jobInfoModel">数据信息</param> /// <returns>ID</returns> public int Add(SURE_QRTZ_JOBINFO jobInfoModel) { try { var jobInfo = dbContext.SURE_QRTZ_JOBINFO.Add(new SURE_QRTZ_JOBINFO() { JobName = jobInfoModel.JobName, JobGroupName = jobInfoModel.JobGroupName, TriggerName = jobInfoModel.TriggerName, TriggerGroupName = jobInfoModel.TriggerGroupName, Cron = jobInfoModel.Cron, Deleted = false, Description = jobInfoModel.Description, State = jobInfoModel.State, PreTime = null, NextTime = null, DLLName = $"{jobInfoModel.DLLName}", FullJobName = jobInfoModel.FullJobName, RequestUrl = jobInfoModel.RequestUrl, StartTime = jobInfoModel.StartTime == null ? DateTimeOffset.UtcNow.LocalDateTime : jobInfoModel.StartTime, EndTime = jobInfoModel.EndTime }); dbContext.SaveChanges(); return(jobInfo.Id); } catch (Exception ex) { throw new Exception($"新增失败,Message:{ex.Message}"); } }
/// <summary> /// 更新数据 /// </summary> /// <param name="jobInfoModel">数据信息</param> /// <returns>ID</returns> public int Update(SURE_QRTZ_JOBINFO jobInfoModel) { try { dbContext.SaveChanges(); return(jobInfoModel.Id); } catch (Exception ex) { throw new Exception($"更新失败,Message:{ex.Message}"); } }
/// <summary> /// 暂停任务 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns>是否成功</returns> public bool PauseJob(SURE_QRTZ_JOBINFO jobInfo) { try { var jobKey = new JobKey(jobInfo.JobName, jobInfo.JobGroupName); scheduler.PauseJob(jobKey); return(true); } catch (Exception ex) { throw new Exception($"暂停任务失败,错误:{ex.Message}"); } }
/// <summary> /// 更改触发器以及执行周期 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns>是否成功</returns> public bool EditJobCron(SURE_QRTZ_JOBINFO jobInfo) { CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); var triggerKey = new TriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .StartAt(jobInfo.StartTime) .EndAt(jobInfo.EndTime) .ForJob(new JobKey(jobInfo.JobName, jobInfo.JobGroupName)) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); scheduler.RescheduleJob(triggerKey, trigger); return(true); }
/// <summary> /// 删除任务 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns>是否成功</returns> public bool DeleteJob(SURE_QRTZ_JOBINFO jobInfo) { try { var jobKey = new JobKey(jobInfo.JobName, jobInfo.JobGroupName); var triggerKey = new TriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); scheduler.PauseTrigger(triggerKey); scheduler.UnscheduleJob(triggerKey); scheduler.DeleteJob(jobKey); return(true); } catch (Exception ex) { throw new Exception($"删除任务失败,错误:{ex.Message}"); } }
/// <summary> /// 运行任务,以及创建Job /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns>是否成功</returns> public bool RunJob(SURE_QRTZ_JOBINFO jobInfo) { try { Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + $"bin/{jobInfo.DLLName}"); JobKey jobKey = new JobKey(jobInfo.JobName, jobInfo.JobGroupName); //只需判断Job是否存在 if (!scheduler.CheckExists(jobKey)) { //Create Job IJobDetail job = JobBuilder.Create(assembly.GetType(jobInfo.FullJobName)) .WithIdentity(jobKey) .UsingJobData(createJobDataMap("jobId", jobInfo.Id)) .UsingJobData(createJobDataMap("requestUrl", jobInfo.RequestUrl)) .UsingJobData(createJobDataMap("fullJobName", jobInfo.FullJobName)) .Build(); //Create Tigger CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .StartAt(jobInfo.StartTime) .EndAt(jobInfo.EndTime) .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); scheduler.ScheduleJob(job, trigger); return(true); } else { return(false); } } catch (Exception ex) { throw new Exception($"运行任务失败,错误:{ex.Message}"); } }