public async Task <JsonResult> RecordExecutedJob(RecordExecutedJobViewModel addJobViewModel) { if (!ModelState.IsValid) { return(Json(ResponseDataFactory.CreateAjaxResponseData("-10001", "添加失败", "输入参数错误:" + ModelState.Values.Where(item => item.Errors.Count == 1).Aggregate(string.Empty, (current, item) => current + (item.Errors[0].ErrorMessage + "; "))))); } var originalJob = _customerJobInfoRepository.LoadCustomerInfo(x => x.JobName == addJobViewModel.OriginalJobName); var jobInfo = new customer_quartzjobinfo { CreateTime = DateTime.Now, Cron = originalJob.Cron, Description = addJobViewModel.JobDescription, JobGroupName = addJobViewModel.JobGroupName, JobName = addJobViewModel.JobName, TriggerState = 2, TriggerName = addJobViewModel.TriggerName, TriggerGroupName = addJobViewModel.TriggerGroupName, DLLName = ConfigurationManager.AppSettings["dllName"], FullJobName = ConfigurationManager.AppSettings["FullJobName"], RequestUrl = originalJob.RequestUrl, Deleted = false, Cycle = originalJob.Cycle, TriggerType = originalJob.TriggerType, RepeatCount = originalJob.RepeatCount }; var jobId = _customerJobInfoRepository.AddCustomerJobInfo(jobInfo); return(Json(ResponseDataFactory.CreateAjaxResponseData("1", "操作成功", jobId))); }
public int AddCustomerJobInfo(customer_quartzjobinfo jobInfo) { var customerJobInfoModel = _dbContext.customer_quartzjobinfo.Add(jobInfo); _dbContext.SaveChanges(); return(customerJobInfoModel.Id); }
/// <summary> /// 暂停任务 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns></returns> public bool PauseJob(customer_quartzjobinfo jobInfo) { var jobKey = _createJobKey(jobInfo.JobName, jobInfo.JobGroupName); _scheduler.PauseJob(jobKey); return(true); }
public bool ResumeJob(customer_quartzjobinfo jobInfo) { var jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); Scheduler.ResumeJob(jobKey); return(true); }
public override bool ModifyJobCron(customer_quartzjobinfo jobInfo) { var scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); var triggerKey = KeyManager.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); var trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddYears(-1)).WithIdentity(triggerKey).WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()).Build(); Scheduler.RescheduleJob(triggerKey, trigger); return(true); }
public bool DeleteJob(customer_quartzjobinfo jobInfo) { var jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); var triggerKey = KeyManager.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); Scheduler.PauseTrigger(triggerKey); Scheduler.UnscheduleJob(triggerKey); Scheduler.DeleteJob(jobKey); return(true); }
public int UpdateCustomerJobInfo(customer_quartzjobinfo customerJobInfoModel, params string[] paramsFieldNames) { _dbContext.customer_quartzjobinfo.Attach(customerJobInfoModel); foreach (var fieldName in paramsFieldNames) { _dbContext.Entry(customerJobInfoModel).Property(fieldName).IsModified = true; } _dbContext.SaveChanges(); return(customerJobInfoModel.Id); }
public override bool ModifyJobCron(customer_quartzjobinfo jobInfo) { var triggerKey = KeyManager.CreateTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .WithSimpleSchedule(x => x.WithIntervalInSeconds(jobInfo.Cycle.HasValue ? jobInfo.Cycle.Value : 1).WithRepeatCount(jobInfo.RepeatCount.Value - 1)) .Build(); Scheduler.RescheduleJob(triggerKey, trigger); return(true); }
/// <summary> /// 更改任务运行周期 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns></returns> public bool ModifyJobCron(customer_quartzjobinfo jobInfo) { CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); var triggerKey = _createTriggerKey(jobInfo.TriggerName, jobInfo.TriggerGroupName); ITrigger trigger = TriggerBuilder.Create().StartNow() .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); _scheduler.RescheduleJob(triggerKey, trigger); return(true); }
public async Task <int> UpdateCustomerJobInfo(customer_quartzjobinfo customerJobInfoModel) { List <string> updateFieldNames = new List <string>(); ReflectObjectFields(customerJobInfoModel, updateFieldNames); //_dbContext.Entry(customerJobInfoModel).State = System.Data.Entity.EntityState.Detached; _dbContext.customer_quartzjobinfo.Attach(customerJobInfoModel); foreach (var fieldName in updateFieldNames) { _dbContext.Entry(customerJobInfoModel).Property(fieldName).IsModified = true; } await _dbContext.SaveChangesAsync(); return(customerJobInfoModel.Id); }
public override bool RunJob(customer_quartzjobinfo jobInfo) { var jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!Scheduler.CheckExists(jobKey).Result) { IJobDetail jobDetail = JobBuilder.Create <JobItem>().WithIdentity(jobKey).UsingJobData(KeyManager.CreateJobDataMap("requestUrl", jobInfo.RequestUrl)).Build(); CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddYears(-1)) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSchedule(cronScheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); Scheduler.ScheduleJob(jobDetail, trigger); } return(true); }
public override bool RunJob(customer_quartzjobinfo jobInfo) { var jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!Scheduler.CheckExists(jobKey).Result) { var job = JobBuilder.Create <JobItem>() .WithIdentity(jobKey) .UsingJobData(KeyManager.CreateJobDataMap("requestUrl", jobInfo.RequestUrl)) .Build(); var trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSimpleSchedule(x => x.WithIntervalInSeconds(jobInfo.Cycle.HasValue ? jobInfo.Cycle.Value : 1).WithRepeatCount(jobInfo.RepeatCount.Value - 1)) .Build(); Scheduler.ScheduleJob(job, trigger); } return(true); }
public async Task <int> UpdateCustomerJobInfo(customer_quartzjobinfo customerJobInfoModel) { List <string> updateFieldNames = new List <string>(); ReflectObjectFields(customerJobInfoModel, updateFieldNames); //_dbContext.Entry(customerJobInfoModel).State = System.Data.Entity.EntityState.Detached; _dbContext.customer_quartzjobinfo.Attach(customerJobInfoModel); foreach (var fieldName in updateFieldNames) { _dbContext.Entry(customerJobInfoModel).Property(fieldName).IsModified = true; } //RecordExecutedJob //if (customerJobInfoModel.TriggerState == 6) //{ // var jobDetail = LoadCustomerInfo(x => x.Id == customerJobInfoModel.Id); // var jobInfo = new customer_quartzjobinfo // { // CreateTime = DateTime.Now, // Cron = jobDetail.Cron, // Description = jobDetail.Description, // JobGroupName = jobDetail.JobGroupName, // JobName = jobDetail.JobName+jobDetail.Id, // TriggerState = 2, // TriggerName = jobDetail.TriggerName, // TriggerGroupName = jobDetail.TriggerGroupName, // DLLName = ConfigurationManager.AppSettings["dllName"], // FullJobName = ConfigurationManager.AppSettings["FullJobName"], // RequestUrl = jobDetail.RequestUrl, // Deleted = false, // Cycle = jobDetail.Cycle, // TriggerType = jobDetail.TriggerType, // RepeatCount = jobDetail.RepeatCount // }; // AddCustomerJobInfo(jobDetail); //} await _dbContext.SaveChangesAsync(); return(customerJobInfoModel.Id); }
/// <summary> /// 运行任务 /// </summary> /// <param name="jobInfo">任务信息</param> /// <returns></returns> public bool RunJob(customer_quartzjobinfo jobInfo) { Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + $"bin/{jobInfo.DLLName}"); var type = assembly.GetType(jobInfo.FullJobName); JobKey jobKey = _createJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!_scheduler.CheckExists(jobKey)) { IJobDetail job = JobBuilder.Create(type) .WithIdentity(jobKey) .UsingJobData(_createJobDataMap("jobId", jobInfo.Id)) .UsingJobData(_createJobDataMap("requestUrl", jobInfo.RequestUrl))//添加此任务请求地址附带到Context上下文中 .Build(); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create().StartNow()//StartAt(DateTime.SpecifyKind(jobInfo.JobStartTime, DateTimeKind.Local)) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); #region Quartz 任务miss之后三种操作 /* * withMisfireHandlingInstructionDoNothing * ——不触发立即执行 * ——等待下次Cron触发频率到达时刻开始按照Cron频率依次执行 * * withMisfireHandlingInstructionIgnoreMisfires * ——以错过的第一个频率时间立刻开始执行 * ——重做错过的所有频率周期后 * ——当下一次触发频率发生时间大于当前时间后,再按照正常的Cron频率依次执行 * * withMisfireHandlingInstructionFireAndProceed * ——以当前时间为触发频率立刻触发一次执行 * ——然后按照Cron频率依次执行*/ #endregion _scheduler.ScheduleJob(job, trigger); } return(true); }
public override bool RunJob(customer_quartzjobinfo jobInfo) { //Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + $"bin/{jobInfo.DLLName}"); //var type = assembly.GetType(jobInfo.FullJobName); JobKey jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!Scheduler.CheckExists(jobKey)) { IJobDetail job = JobBuilder.Create <JobItem>() .WithIdentity(jobKey) .UsingJobData(KeyManager.CreateJobDataMap("requestUrl", jobInfo.RequestUrl)) .Build(); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSimpleSchedule(x => x.WithIntervalInSeconds(jobInfo.Cycle.HasValue? jobInfo.Cycle.Value:1).WithRepeatCount(jobInfo.RepeatCount.Value - 1)) .Build(); Scheduler.ScheduleJob(job, trigger); } return(true); }
public override bool RunJob(customer_quartzjobinfo jobInfo) { //Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + $"bin/{jobInfo.DLLName}"); //var type = assembly.GetType(jobInfo.FullJobName); JobKey jobKey = KeyManager.CreateJobKey(jobInfo.JobName, jobInfo.JobGroupName); if (!Scheduler.CheckExists(jobKey)) { IJobDetail job = JobBuilder.Create <JobItem>() .WithIdentity(jobKey) .UsingJobData(KeyManager.CreateJobDataMap("requestUrl", jobInfo.RequestUrl)) .Build(); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron); ITrigger trigger = TriggerBuilder.Create().StartAt(DateTimeOffset.Now.AddYears(-1)) .WithIdentity(jobInfo.TriggerName, jobInfo.TriggerGroupName) .ForJob(jobKey) .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing()) .Build(); Scheduler.ScheduleJob(job, trigger); } return(true); }
public int AddCustomerJobInfo(string jobName, string jobGroupName, string triggerName, string triggerGroupName, string cron, string jobDescription, string requestUrl, int?cycle, int?repeatCount, string triggerType) { var jobInfo = new customer_quartzjobinfo { CreateTime = DateTime.Now, Cron = cron, Description = jobDescription, JobGroupName = jobGroupName, JobName = jobName, TriggerState = -1, TriggerName = triggerName, TriggerGroupName = triggerGroupName, DLLName = ConfigurationManager.AppSettings["dllName"], FullJobName = ConfigurationManager.AppSettings["FullJobName"], RequestUrl = requestUrl, Deleted = false, Cycle = cycle, TriggerType = triggerType, RepeatCount = repeatCount }; return(AddCustomerJobInfo(jobInfo)); }
public abstract bool RunJob(customer_quartzjobinfo jobInfo);
public abstract bool ModifyJobCron(customer_quartzjobinfo jobInfo);
public int UpdateCustomerJobInfo(customer_quartzjobinfo customerJobInfoModel) { _dbContext.SaveChanges(); return(customerJobInfoModel.Id); }