Example #1
0
        /// <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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
 /// <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));
        }