/// <summary> /// 创建作业 /// </summary> /// <param name="jobQuartz"></param> /// <param name="triggerType"></param> public static void AddScheduleJob(JobQuartzOutPut jobQuartz, QuartzEnum triggerType) { PublicJob c = new PublicJob(); jobQuartz.FullName = c.GetEnumDescription(triggerType); Type type = c.ConvertObject(jobQuartz.TriggerType, jobQuartz.FullName).GetType(); if (type.AssemblyQualifiedName != null) { IJobDetail job = JobBuilder.Create().OfType(Type.GetType(type.AssemblyQualifiedName, true)) .WithIdentity(jobQuartz.JobName, jobQuartz.JobGroup) .StoreDurably() .Build(); // 触发作业 ITrigger trigger = TriggerBuilder.Create() #region 使用cron 规则 .WithIdentity(jobQuartz.TriggerName, jobQuartz.TriggerGroupName) .WithCronSchedule(jobQuartz.QuartzTime) .StartAt(DateTime.UtcNow) .WithPriority(1) .Build(); #endregion ScheduleJob(job, trigger); } }
public Type GetEnumDescription(QuartzEnum enumValue) { string str = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(str); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); if (objs.Length == 0) { return(str.GetType()); } DescriptionAttribute da = (DescriptionAttribute)objs[0]; var dd = Assembly.LoadFile(@"D:\test\QuartzMVC\QuartzMVC\Bin\QuartzMVC.dll"); Type t = dd.GetType(da.Description); return(t); }
/// <summary> /// 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) /// </summary> /// <param name="jobQuartz">作业实体</param> public static void UpdateJobTime(JobQuartzOutPut jobQuartz) { try { IScheduler sched = SchedulerFactory.GetScheduler(); TriggerKey triggerKey = new TriggerKey(jobQuartz.TriggerName, jobQuartz.TriggerGroupName); ICronTrigger trigger = (ICronTrigger)sched.GetTrigger(triggerKey); if (trigger == null) { return; } RemoveJob(jobQuartz); QuartzEnum type = (QuartzEnum)Enum.Parse(typeof(QuartzEnum), jobQuartz.TriggerType); AddScheduleJob(jobQuartz, type); } catch (Exception e) { throw new Exception(e.Message); } }
/// <summary> /// 新增/编辑作业 /// </summary> /// <param name="jobQuartz">作业实体参数</param> /// <returns></returns> public JsonResult AddJobQuartz(JobQuartzOutPut jobQuartz) { OperateStatus statu = new OperateStatus(); jobQuartz.Addtime = DateTime.Now; jobQuartz.UserName = "******"; if (jobQuartz.Id == 0) { QuartzEnum type = (QuartzEnum)Enum.Parse(typeof(QuartzEnum), jobQuartz.TriggerType); StdSchedulerManager.AddScheduleJob(jobQuartz, type); DataBaseLogic.Insert(jobQuartz); statu.Message = "添加成功"; statu.ResultSign = ResultSign.Successful; } else { StdSchedulerManager.UpdateJobTime(jobQuartz); DataBaseLogic.Update(jobQuartz); statu.Message = "编辑成功"; statu.ResultSign = ResultSign.Successful; } return(Json(statu)); }