Exemplo n.º 1
0
        private static void TriggerScheduler()
        {
            var job     = new JobDetailImpl("StoreInsiderInfoScheduler", typeof(Core.Jobs.StoreInsiderInfoJob));
            var trigger = TriggerBuilder.Create();

            //trigger.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(1));
            trigger.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 30,55 8 * * ?")));
            trigger.StartNow();

            var jobTwo     = new JobDetailImpl("StoreActionScheduler", typeof(Core.Jobs.FindAndStoreActionJob));
            var triggerTwo = TriggerBuilder.Create();

            //triggerTwo.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(2));
            triggerTwo.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 30,50 10 * * ?")));
            triggerTwo.StartNow();


            var jobThree     = new JobDetailImpl("UpdatePortfolioScheduler", typeof(Core.Jobs.UpdatePortfolioJob));
            var triggerThree = TriggerBuilder.Create();

            //triggerThree.WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(1));
            triggerThree.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0 0 18 * * ?")));
            triggerThree.StartNow();


            var schedFact = new StdSchedulerFactory();
            var sched     = schedFact.GetScheduler();

            sched.ScheduleJob(job, trigger.Build());
            sched.ScheduleJob(jobTwo, triggerTwo.Build());
            sched.ScheduleJob(jobThree, triggerThree.Build());
            sched.Start();
        }
Exemplo n.º 2
0
        /// <summary>
        /// The post initialize.
        /// </summary>
        /// <suMMary>
        /// 初始化模块时启动任务
        /// </suMMary>
        public override void PostInitialize()
        {
            base.PostInitialize();
            var jobManager = this.IocManager.IocContainer.Resolve <IQuartzScheduleJobManager>();

            jobManager.ScheduleAsync <Yearly>(
                job =>
            {
                job.WithIdentity(nameof(Yearly), "MyGroup");
            },
                trigger =>
            {
                trigger.WithIdentity(nameof(Yearly), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(Yearly.Schedule)).Build();
            });

            jobManager.ScheduleAsync <DailyTask>(
                job =>
            {
                job.WithIdentity(nameof(DailyTask), "MyGroup");
            },
                trigger =>
            {
                trigger.WithIdentity(nameof(DailyTask), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(DailyTask.Schedule)).Build();
            });

            jobManager.ScheduleAsync <MonthlyTask>(
                job =>
            {
                job.WithIdentity(nameof(MonthlyTask), "MyGroup");
            },
                trigger =>
            {
                trigger.WithIdentity(nameof(MonthlyTask), "MyGroup").WithSchedule(CronScheduleBuilder.CronSchedule(MonthlyTask.Schedule)).Build();
            });
        }
Exemplo n.º 3
0
        /// <summary>
        /// 启动多任务调度方法,放到webapi的startup
        /// 再添加任务的时候添加新的触发器添加到dic中,
        /// </summary>
        /// <typeparam name="TJob"></typeparam>
        public static void StartJobs <TJob>() where TJob : IJob
        {
            var scheduler = new StdSchedulerFactory().GetScheduler().Result;

            var job = JobBuilder.Create <TJob>()
                      .WithIdentity("jobs")
                      .Build();

            var trigger1 = TriggerBuilder.Create()
                           .WithIdentity("job.trigger")
                           .StartNow()
                           .WithSchedule(CronScheduleBuilder.CronSchedule("0/20 * 18 * * ?"))
                           .ForJob(job)
                           .Build();

            var trigger2 = TriggerBuilder.Create()
                           .WithIdentity("job.trigger2")
                           .StartNow()
                           .WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromSeconds(11)).RepeatForever())
                           .ForJob(job)
                           .Build();

            var dictionary = new Dictionary <IJobDetail, IReadOnlyCollection <ITrigger> >
            {
                { job, new HashSet <ITrigger> {
                      trigger1
                  } }
            };

            scheduler.ScheduleJobs(dictionary, true);
            scheduler.Start();
        }
Exemplo n.º 4
0
        /// <summary>
        /// 修改任务
        /// </summary>
        /// <returns></returns>
        public static void Modify(JobDetail jobDetail)
        {
            var trigger = Scheduler.GetTrigger(GetTriggerKey(jobDetail));

            if (trigger == null)
            {
                throw new NotFoundException("没有找到该任务");
            }

            // 修改 Job
            // 得到任务
            var oldJobDetail = Scheduler.GetJobDetail(trigger.JobKey);

            // 修改数据
            oldJobDetail = oldJobDetail.GetJobBuilder()
                           .WithDescription(jobDetail.job_description)
                           .UsingJobData("JobData", jobDetail.job_data)
                           .Build();

            // 修改 Trigger
            trigger = trigger.GetTriggerBuilder()
                      .WithSchedule(CronScheduleBuilder.CronSchedule(jobDetail.cron).WithMisfireHandlingInstructionDoNothing())
                      .EndAt(jobDetail.end_time == DateTime.MinValue ? null : (DateTimeOffset?)new DateTimeOffset(jobDetail.end_time))
                      .Build();

            // 删除旧 Job
            Scheduler.DeleteJob(trigger.JobKey);
            // 新 Job 加入调度池
            Scheduler.ScheduleJob(oldJobDetail, trigger);
        }
Exemplo n.º 5
0
        public void startEventTimers()
        {
            Updater updater = GlobalHandlers.DatabaseHandler.getUpdater(handlers.instances.ViewerHandler.Feature.EVENTS);

            if (updater == null)
            {
                //no updater found
                GlobalHandlers.Debugger.write("There is no event updater setup.");
                return;
            }
            string       timeSelection = updater.Type;
            Update_Times updateTimes;
            string       mayBeUnused = String.Empty;
            string       cronJob     = String.Empty;

            if (timeSelection == "1")
            {
                updateTimes = Update_Times.Every_24_Hours;
                cronJob     = "0 0 8 ? * *";
            }
            IJobDetail          job     = JobBuilder.Create <EventsUpdaterJob>().WithIdentity("events", "main").Build();
            CronScheduleBuilder builder = CronScheduleBuilder.CronSchedule(cronJob);

            builder.Build();
            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("events")
                               .StartNow()
                               .WithSchedule(builder).Build();

            _scheduler.ScheduleJob(job, trigger);
            Updates.NextTimeUpdate_Events = convertUTC(trigger.GetNextFireTimeUtc().ToString());
            GlobalHandlers.Debugger.write("Events trigger and job setup. Next fire is at: " + convertUTC(trigger.GetNextFireTimeUtc().ToString()));
        }
Exemplo n.º 6
0
        public static void create_schedule(string group_name, string schedule = "0/15 * * * * ?", Dictionary <string, object> para = null)
        {
            if (para == null)
            {
                para = new Dictionary <string, object>()
                {
                }
            }
            ;
            group_name = group_name.ToLower();

            string name = group_name + "." + DateTime.Now.ToString("yyMMdd-HHmmss-fff");

            JobDataMap m = new JobDataMap();

            m.Put("ID___", name);
            m.Put("SCHEDULE___", schedule);
            m.Put("CURRENT_ID___", 0);
            m.Put("COUNTER___", new ConcurrentDictionary <long, bool>());
            m.Put("PARA___", para);

            IJobDetail j = JobBuilder.Create <clsJobItem>().WithIdentity(name, group_name)
                           .UsingJobData(m)
                           .Build();
            ITrigger t = TriggerBuilder.Create().WithIdentity(name, group_name)
                         .WithSchedule(CronScheduleBuilder.CronSchedule(schedule))
                         .StartNow()
                         .Build();

            m_job.TryAdd(name, j);
            m_trigger.TryAdd(name, t);

            scheduler.ScheduleJob(j, t).Wait();
        }
    }
Exemplo n.º 7
0
        public void Run <T>(string identity, string cronjob) where T : IJob
        {
            ISchedulerFactory schedFact = new StdSchedulerFactory();

            IScheduler scheduler = schedFact.GetScheduler();

            scheduler.Start();

            IJobDetail job = JobBuilder.Create <T>()
                             .WithIdentity(identity, "IT")
                             .RequestRecovery()
                             .Build();

            var trigger = (ICronTrigger)TriggerBuilder.Create()
                          .WithIdentity(identity, "IT")
                          .WithSchedule(CronScheduleBuilder
                                        .CronSchedule(cronjob)
                                        .InTimeZone(TimeZoneInfo.Local))
                          .StartAt(DateTime.UtcNow)
                          .Build();

            scheduler.ScheduleJob(job, trigger);

            Console.WriteLine("Rotation has been scheduled...");
        }
Exemplo n.º 8
0
        private static async Task ScheduleJob(IServiceProvider serviceProvider)
        {
            var Propertis = new NameValueCollection
            {
                { "quartz.serializer.type", "binary" }
            };

            var factory = new StdSchedulerFactory(Propertis);
            var sched   = await factory.GetScheduler();

            sched.JobFactory = new JobFactory(serviceProvider);
            await sched.Start();

            var job = JobBuilder.Create <QuartzJob>()
                      .WithIdentity("myJob", "group1")
                      .Build();
            //  var trigger = TriggerBuilder.Create()
            //    .WithIdentity("myTrigger", "group1")
            //    .StartNow()
            //    .WithSimpleSchedule(x => x
            //        .WithIntervalInHours(11)
            //        .RepeatForever())
            //.Build();


            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("Test")
                               .WithSchedule(CronScheduleBuilder
                                             .CronSchedule("0 0 9 1/1 * ? *"))
                               .WithSimpleSchedule(x => x.WithIntervalInMinutes(2)
                                                   .WithRepeatCount(10))
                               .Build();
            await sched.ScheduleJob(job, trigger);
        }
        public TriggerPropertyBundle LoadExtendedTriggerProperties(ConnectionAndTransactionHolder conn, TriggerKey triggerKey)
        {
            using (IDbCommand cmd = adoUtil.PrepareCommand(conn, AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, tablePrefix, schedNameLiteral)))
            {
                adoUtil.AddCommandParameter(cmd, "triggerName", triggerKey.Name);
                adoUtil.AddCommandParameter(cmd, "triggerGroup", triggerKey.Group);

                using (IDataReader rs = cmd.ExecuteReader())
                {
                    if (rs.Read())
                    {
                        string cronExpr   = rs.GetString(AdoConstants.ColumnCronExpression);
                        string timeZoneId = rs.GetString(AdoConstants.ColumnTimeZoneId);

                        CronScheduleBuilder cb = CronScheduleBuilder.CronSchedule(cronExpr);

                        if (timeZoneId != null)
                        {
                            cb.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById(timeZoneId));
                        }

                        return(new TriggerPropertyBundle(cb, null, null));
                    }
                }

                throw new InvalidOperationException("No record found for selection of Trigger with key: '" + triggerKey + "' and statement: " + AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, tablePrefix, schedNameLiteral));
            }
        }
Exemplo n.º 10
0
        public async Task StartAsync()
        {
            try
            {
                _log.Info($"{nameof(MyServiceRunner)} is creating\r\n");
                JobKey     jobKey = new JobKey(nameof(MyServiceJob));
                IJobDetail job    = JobBuilder.Create(typeof(MyServiceJob))
                                    .WithIdentity(jobKey)
                                    .Build();

                CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule("0/1 * * * * ?");

                ITrigger trigger = TriggerBuilder.Create().StartNow()
                                   .WithIdentity(nameof(MyServiceJob) + "_Trigger")
                                   .ForJob(jobKey)
                                   .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing())
                                   .Build();
                await _scheduler.ScheduleJob(job, trigger);

                _log.Info($"{nameof(MyServiceRunner)} is created\r\n");
                await _scheduler.Start();

                _log.Info($"{nameof(MyServiceRunner)} is started\r\n");
            }
            catch (Exception e)
            {
                _log.Error(e.Message);
                Console.WriteLine(e);
            }
        }
Exemplo n.º 11
0
        public bool ModifyJobCron(JobParamBaseModel job)
        {
            try
            {
                JobKey jobKey = CreateJobKey(job.JobName, job.JobGroupName);
                CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.CronSchedule(job.CronExpression);
                var triggerKey = CreateTriggerKey(job.TriggerName, job.TriggerGroupName);

                ITrigger trigger = TriggerBuilder.Create().StartNow()
                                   .WithIdentity(job.TriggerName, job.TriggerGroupName)
                                   .ForJob(jobKey)
                                   .WithSchedule(scheduleBuilder.WithMisfireHandlingInstructionDoNothing())
                                   .Build();

                bool blxml = Xml.XmlJobManage.ModifyJobCronToXml(triggerKey, jobKey, trigger);
                if (blxml)
                {
                    _scheduler.RescheduleJob(triggerKey, trigger);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
            return(false);
        }
Exemplo n.º 12
0
        static IScheduler myscheduler;// = new StdSchedulerFactory();

        public async void Start()
        {
            try
            {
                NameValueCollection properties = new NameValueCollection();
                properties["quartz.scheduler.instanceName"] = "MyShedSend";

                myscheduler = await new StdSchedulerFactory(properties).GetScheduler();
                await myscheduler.Start();

                CronScheduleBuilder shedall = CronScheduleBuilder
                                              .CronSchedule(cron_alltext);

                IJobDetail job2 = JobBuilder.Create <AllTextSender>()
                                  .WithIdentity("trigger2", "group2")
                                  .Build();

                ITrigger trigger2 = TriggerBuilder.Create()
                                    .WithIdentity("trigger2", "group2")
                                    .StartNow()
                                    .WithSchedule(shedall)
                                    .Build();

                await myscheduler.RescheduleJob(trigger2.Key, trigger2);

                await myscheduler.ScheduleJob(job2, trigger2);
            }
            catch (Exception ex)
            {
                Console.WriteLine("class SendAllScheduler \n method Start \n" + ex.Message.ToString());
            }
        }
Exemplo n.º 13
0
        public override bool RunJob(custom_job_infoes 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);
                //Task.Run(() =>
                //{
                //    //执行更新任务所在节点信息

                //});
            }
            return(true);
        }
Exemplo n.º 14
0
        public void StartOrRestartSchedulerTrigger()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

            if (scheduler.IsStarted == false)
            {
                scheduler.Start();
            }

            var jobIsRunning = scheduler.CheckExists(new JobKey(JobBackgroundRunExpirePolicyJobName));

            if (jobIsRunning)
            {
                scheduler.UnscheduleJob(new TriggerKey(TriggerBackgroundRunExpirePolicyJobName));
            }

            IJobDetail job = JobBuilder.Create <ExpirePolicyBackgroundJob>()
                             .WithIdentity(new JobKey(JobBackgroundRunExpirePolicyJobName))
                             .Build();

            ///CronExpression cexp = new CronExpression("0 30 12 1/1 * ? *"); // every day in 12:30
            CronExpression cexp = new CronExpression("0 0/30 * 1/1 * ? *"); // every 30 minutes (just for test)

            CronScheduleBuilder cronSchedule1 = CronScheduleBuilder.CronSchedule(cexp);

            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity(TriggerBackgroundRunExpirePolicyJobName)
                               .StartNow()
                               .WithSchedule(cronSchedule1)
                               .Build();

            scheduler.ScheduleJob(job, trigger);
        }
        private ITrigger GetUploadTrigger(IJobDetail jobDetail)
        {
            var builder =
                TriggerBuilder
                .Create()
                .ForJob(jobDetail)
                .WithDescription(string.Format(Resources.Trigger_for_job_0_1, jobDetail.Key.Name,
                                               jobDetail.Key.Group))
                .WithIdentity(
                    new TriggerKey(
                        string.Format(Resources.Trigger_for_job_0_1, jobDetail.Key.Name, jobDetail.Key.Group),
                        jobDetail.Key.Group));

            if (upJobSimpleTriggerRadioButton.Checked)
            {
                var minutes = upJobHoursDateTimePicker.Value.Hour * 60;
                minutes += upJobMinutesDateTimePicker.Value.Minute;

                return(builder.WithSimpleSchedule(x => x
                                                  .WithIntervalInMinutes(minutes)
                                                  .RepeatForever())
                       .StartNow()
                       .Build());
            }
            return
                (builder.WithSchedule(CronScheduleBuilder.CronSchedule(upJobCronExpressionTextBox.Text))
                 .StartAt(upJobStartAtDateTimePicker.Value.ToUniversalTime())
                 .Build());
        }
Exemplo n.º 16
0
 public long GetRunTime(string cron, int runTime)
 {
     //IL_0017: Unknown result type (might be due to invalid IL or missing references)
     //IL_003c: Expected O, but got Unknown
     //IL_003b: Unknown result type (might be due to invalid IL or missing references)
     //IL_0055: Expected O, but got Unknown
     checked
     {
         try
         {
             CronScheduleBuilder    val            = CronScheduleBuilder.CronSchedule(cron);
             ICronTrigger           val2           = (ICronTrigger)TriggerBuilder.Create().WithSchedule((IScheduleBuilder)(object)val).Build();
             DateTimeOffset         dateTimeOffset = DateTimeOffset.Now.Subtract(TimeSpan.FromMinutes(runTime)).ToLocalTime();
             IList <DateTimeOffset> list           = (IList <DateTimeOffset>)TriggerUtils.ComputeFireTimesBetween((IOperableTrigger)val2, (ICalendar)null, dateTimeOffset, DateTimeOffset.Now.ToLocalTime());
             foreach (DateTimeOffset item in list)
             {
                 long num = (long)Math.Round(item.AddMinutes(runTime).Subtract(DateTimeOffset.Now).TotalMilliseconds);
                 if (num > 0 && num <= runTime * 60 * 1000)
                 {
                     return(num);
                 }
             }
         }
         catch (Exception ex)
         {
             ProjectData.SetProjectError(ex);
             Exception ex2 = ex;
             log.Error((object)ex2);
             ProjectData.ClearProjectError();
         }
         return(0L);
     }
 }
Exemplo n.º 17
0
 public void scheduler(Action act, string cron)
 {
     //IL_0000: Unknown result type (might be due to invalid IL or missing references)
     //IL_0006: Expected O, but got Unknown
     //IL_0029: Unknown result type (might be due to invalid IL or missing references)
     //IL_002f: Expected O, but got Unknown
     //IL_004f: Unknown result type (might be due to invalid IL or missing references)
     //IL_0055: Expected O, but got Unknown
     //IL_006e: Unknown result type (might be due to invalid IL or missing references)
     //IL_0075: Expected O, but got Unknown
     try
     {
         JobDataMap val = new JobDataMap();
         ((DirtyFlagMap <string, object>)(object) val).Add(RunnableJob.TASK_KEY, (object)act);
         string        text = "job_" + Conversions.ToString(NextId());
         JobKey        val2 = new JobKey(text);
         JobDetailImpl val3 = (JobDetailImpl)JobBuilder.Create(typeof(RunnableJob)).UsingJobData(val).WithIdentity(val2)
                              .Build();
         CronScheduleBuilder val4 = CronScheduleBuilder.CronSchedule(cron);
         ICronTrigger        val5 = (ICronTrigger)TriggerBuilder.Create().WithSchedule((IScheduleBuilder)(object)val4).Build();
         _scheduler.ScheduleJob((IJobDetail)(object)val3, (ITrigger)(object)val5);
     }
     catch (Exception ex)
     {
         ProjectData.SetProjectError(ex);
         Exception ex2 = ex;
         log.Error((object)ex2);
         ProjectData.ClearProjectError();
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// 添加job
        /// </summary>
        /// <param name="job_name"></param>
        /// <param name="job_group"></param>
        /// <returns></returns>
        public async Task <bool> AddJob(string job_name, string job_group, string job_cron, string job_value, string job_class_str)
        {
            var data     = GetJobDataMapByStr(job_value);
            var jobclass = Type.GetType(job_class_str);

            //4、创建任务
            var jobDetail = JobBuilder.Create(jobclass).WithIdentity(job_name, job_group).UsingJobData(data).Build();

            //5.1 构建器
            var builder = CronScheduleBuilder.CronSchedule(job_cron);

            //5.2 触发器
            var trigger_builder = TriggerBuilder.Create();

            //6、构建
            var trigger = trigger_builder.WithIdentity(job_name, job_group)
                          .ForJob(job_name, job_group)
                          .WithSchedule(builder.WithMisfireHandlingInstructionFireAndProceed())
                          .Build();

            //6、监听
            AddListener(jobDetail);

            //7、将触发器和任务器绑定到调度器中
            await _scheduler.ScheduleJob(jobDetail, trigger);

            return(GeTriggerState(job_name, job_group) == TriggerState.Normal);
        }
Exemplo n.º 19
0
        public static async void Start(IServiceProvider serviceProvider)
        {
            var configurationProvider = serviceProvider.GetRequiredService <IConfiguration>();
            var scheduler             = await StdSchedulerFactory.GetDefaultScheduler();

            scheduler.JobFactory = serviceProvider.GetRequiredService <JobFactory>();
            foreach (var job in GetJobsToRun(configurationProvider))
            {
                var jobDetail = JobBuilder.Create(job.Type).Build();

                var schedule = !string.IsNullOrWhiteSpace(job.CronExpression)
                    ? (IScheduleBuilder)CronScheduleBuilder.CronSchedule(job.CronExpression)
                    : SimpleScheduleBuilder.Create().WithIntervalInSeconds(DefaultStartIntervalSeconds).RepeatForever();

                var trigger = TriggerBuilder.Create()
                              .WithIdentity(job.Type.FullName)
                              .WithSchedule(schedule)
                              .StartNow()
                              .Build();

                await scheduler.ScheduleJob(jobDetail, trigger);
            }

            await scheduler.Start();
        }
Exemplo n.º 20
0
        private IScheduleBuilder CreateScheduleWithCron(string cronExpression, TimeZoneInfo timeZone)
        {
            CronScheduleBuilder sb = CronScheduleBuilder.CronSchedule(cronExpression);

            sb.InTimeZone(timeZone);
            return(sb);
        }
        public async Task StartAsync()
        {
            _scheduler = await _factory.GetScheduler().ConfigureAwait(false);

            await _scheduler.Start().ConfigureAwait(false);

            foreach (var service in _backgroundServices)
            {
                ITrigger trigger = TriggerBuilder.Create()
                                   .WithIdentity(service.Identity, service.Group)
                                   .WithSchedule(CronScheduleBuilder.CronSchedule(service.CronSchedule).InTimeZone(service.TimeZone))
                                   .ForJob(service.Identity, service.Group).Build();

                var        type = service.GetType();
                IJobDetail job  = JobBuilder.Create(type)
                                  .WithIdentity(service.Identity, service.Group)
                                  .Build();
                if (!await _scheduler.CheckExists(job.Key).ConfigureAwait(false))
                {
                    await _scheduler.ScheduleJob(job, trigger).ConfigureAwait(false);
                }
                if (service.DoStartNow)
                {
                    await _scheduler.TriggerJob(new JobKey(service.Identity, service.Group)).ConfigureAwait(false);
                }
            }
        }
Exemplo n.º 22
0
        public async Task <TriggerPropertyBundle> LoadExtendedTriggerProperties(ConnectionAndTransactionHolder conn, TriggerKey triggerKey)
        {
            using (var cmd = DbAccessor.PrepareCommand(conn, AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, TablePrefix, SchedNameLiteral)))
            {
                DbAccessor.AddCommandParameter(cmd, "triggerName", triggerKey.Name);
                DbAccessor.AddCommandParameter(cmd, "triggerGroup", triggerKey.Group);

                using (var rs = await cmd.ExecuteReaderAsync().ConfigureAwait(false))
                {
                    if (await rs.ReadAsync().ConfigureAwait(false))
                    {
                        string cronExpr   = rs.GetString(AdoConstants.ColumnCronExpression);
                        string timeZoneId = rs.GetString(AdoConstants.ColumnTimeZoneId);

                        CronScheduleBuilder cb = CronScheduleBuilder.CronSchedule(cronExpr);

                        if (timeZoneId != null)
                        {
                            cb.InTimeZone(TimeZoneUtil.FindTimeZoneById(timeZoneId));
                        }

                        return(new TriggerPropertyBundle(cb, null, null));
                    }
                }

                throw new InvalidOperationException("No record found for selection of Trigger with key: '" + triggerKey + "' and statement: " + AdoJobStoreUtil.ReplaceTablePrefix(StdAdoConstants.SqlSelectCronTriggers, TablePrefix, SchedNameLiteral));
            }
        }
Exemplo n.º 23
0
        private static ITrigger CreateTrigger(Task task)
        {
            string[] components = task.Schedule.CronExpression.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            if (components.Length < 5)
            {
                throw new Exception("Invalid expression. Should have no less than 5 components.");
            }

            //из http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html
            //Support for specifying both a day-of-week and a day-of-month value is not complete (you must currently use the '?' character in one of these fields).
            if (components[2] != "?" && components[4] != "?")
            {
                if (components[2] == "*")
                {
                    components[2] = "?";
                }
                else
                {
                    components[4] = "?";
                }
            }

            //в бд лежит без секунд а кварц поддерживает с секундами только так что 0 прибавляем
            string cronExprFixed = "0 " + string.Join(" ", components);

            return(TriggerBuilder.Create()
                   .WithIdentity(GetTriggerKey(task))
                   .WithSchedule(CronScheduleBuilder.CronSchedule(cronExprFixed))
                   .Build());
        }
Exemplo n.º 24
0
        public static void Start()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;

            scheduler.Start();

            IJobDetail firstJob = JobBuilder.Create <QueryExecuteJob>().Build();

            ITrigger firstTrigger = TriggerBuilder.Create()
                                    .WithIdentity("trigger1", "group1")
                                    .StartNow()
                                    .WithSchedule(CronScheduleBuilder.CronSchedule("0 30 9 1,5,10,15,20,25 MAY,DEC ? *"))
                                    .Build();


            IJobDetail secondJob = JobBuilder.Create <ProcedureExecuteJob>().Build();

            ITrigger secondTrigger = TriggerBuilder.Create()
                                     .WithIdentity("trigger2", "group2")
                                     .StartNow()
                                     .WithSchedule(CronScheduleBuilder.CronSchedule(" 0 0 0 ? * FRI *"))
                                     .Build();

            scheduler.ScheduleJob(firstJob, firstTrigger);
            scheduler.ScheduleJob(secondJob, secondTrigger);
        }
        private static IScheduleBuilder BuildToRunOnNthMinutesOfAnHour(int minutes)
        {
            // http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html
            var cronExpression = $"0 0/{minutes} * * * ?";

            return(CronScheduleBuilder.CronSchedule(cronExpression)
                   .WithMisfireHandlingInstructionDoNothing());
        }
Exemplo n.º 26
0
        private static void Schedule(IScheduler sched, Type type, IConfiguration config)
        {
            IScheduleJob scheduleJob = (IScheduleJob)Activator.CreateInstance(type);

            // define the job and tie it
            IJobDetail job = JobBuilder.Create(type)
                             .WithIdentity(type.Name)
                             .Build();

            sched.PauseJob(job.Key);

            String cron = config.GetSection($"Scheduler:Crons:{type.Name}").Value;

            // Update trigger
            if (String.IsNullOrEmpty(cron))
            {
                Console.WriteLine(scheduleJob.ToString() + " pasued.");
                (scheduleJob.ToString() + " pasued.").Log();
            }
            else
            {
                CronScheduleBuilder cronBuilder = CronScheduleBuilder.CronSchedule(cron);

                ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create()
                                           .WithIdentity(type.Name + "Trigger")
                                           .WithSchedule(cronBuilder)
                                           .ForJob(job)
                                           .Build();

                IReadOnlyCollection <ITrigger> triggers = sched.GetTriggersOfJob(job.Key).Result;

                ICronTrigger currentTrigger = triggers.FirstOrDefault(x => x.GetType().Equals(typeof(CronTriggerImpl))) as ICronTrigger;

                if (currentTrigger == null)
                {
                    sched.ScheduleJob(job, cronTrigger);
                }
                else if (currentTrigger.CronExpressionString != cronTrigger.CronExpressionString)
                {
                    sched.RescheduleJob(cronTrigger.Key, cronTrigger);
                }

                sched.ResumeJob(job.Key);

                Console.WriteLine(scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString);
                (scheduleJob.ToString() + " scheduled: " + cronTrigger.CronExpressionString).Log();

                try
                {
                    scheduleJob.ResumeJob();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    ex.Log();
                }
            }
        }
Exemplo n.º 27
0
        public bool ModifyJobCron(Customer_JobInfo jobInfo)
        {
            var scheduleBuilder = CronScheduleBuilder.CronSchedule(jobInfo.Cron);
            var triggerKey      = TaskSchedulerHelper.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);
        }
Exemplo n.º 28
0
        public void Start()
        {
            scheduler.Start();

            ITrigger trigger = TriggerBuilder.Create().WithIdentity("triggerName0", "goupName3").WithSchedule
                                   (CronScheduleBuilder.CronSchedule("*/2 * * * * ?").WithMisfireHandlingInstructionDoNothing()).Build();

            scheduler.ScheduleJob(job, trigger);
        }
        public ITrigger CreateTrigger(EbTask _task)
        {
            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("T-" + _task.JobArgs.SolnId + "-" + _task.JobArgs.ObjId + "-" + _task.Expression + "-" + DateTime.Now)
                               .StartNow()
                               .WithSchedule(CronScheduleBuilder.CronSchedule(_task.Expression) /*.InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("Coordinated Universal Time"))*/)
                               .Build();

            return(trigger);
        }
Exemplo n.º 30
0
        private static ITrigger DefineCronTrigger(string identity, DateTime startTime, string cronEx)
        {
            var monthlyTrigger = TriggerBuilder.Create()
                                 .WithIdentity(identity, Guid.NewGuid().ToString())
                                 .StartAt(startTime)
                                 .WithSchedule(CronScheduleBuilder.CronSchedule(cronEx))
                                 .Build();

            return(monthlyTrigger);
        }