Esempio n. 1
0
 /// <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}");
     }
 }
Esempio n. 2
0
 /// <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}");
     }
 }
Esempio n. 3
0
 /// <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}");
     }
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 /// <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}");
     }
 }
Esempio n. 6
0
        /// <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}");
            }
        }