Exemple #1
0
        /// <summary>
        /// 每周排除
        /// </summary>
        /// <param name="schedulerName"></param>
        /// <param name="calName"></param>
        /// <param name="excludeDays"></param>
        /// <returns></returns>
        public async Task ExcludeInWeekAsync(string schedulerName, string calName, DayOfWeek[] excludeDays)
        {
            var scheduler = await GetSchedulerAsync(schedulerName);

            var calender = new WeeklyCalendar();

            excludeDays.ForEach(item => calender.SetDayExcluded(item, true));
            await scheduler.AddCalendar(calName, calender, true, true);
        }
Exemple #2
0
        public void TestWeeklyCalendarSerialization()
        {
            WeeklyCalendar weeklyCalendar = new WeeklyCalendar();

            weeklyCalendar.SetDayExcluded(DayOfWeek.Monday, true);
            WeeklyCalendar clone = weeklyCalendar.DeepClone();

            Assert.IsTrue(clone.IsDayExcluded(DayOfWeek.Monday));
        }
Exemple #3
0
        /// <summary>
        /// create a dummy calendar
        /// </summary>
        /// <param name="description">Description</param>
        /// <returns>ICalendar</returns>
        protected static ICalendar CreateCalendar(string description = "week days only")
        {
            var calendar = new WeeklyCalendar();

            calendar.SetDayExcluded(DayOfWeek.Saturday, true);
            calendar.SetDayExcluded(DayOfWeek.Sunday, true);

            calendar.Description = description;

            return(calendar);
        }
    private static void Main()
    {
        var calendar = new WeeklyCalendar();

        calendar.AddEntry("Monday", "Internal meeting");
        calendar.AddEntry("Tuesday", "Create presentation");
        calendar.AddEntry("Tuesday", "Create lab and exercise");
        calendar.AddEntry("Thursday", "Enum Lecture");
        calendar.AddEntry("Monday", "Second internal meeting");

        foreach (var weeklyEntry in calendar.WeeklySchedule.OrderBy(n => n).ToList())
        {
            Console.WriteLine(weeklyEntry);
        }
    }
    public static void Main(string[] args)
    {
        WeeklyCalendar calendar = new WeeklyCalendar();

        calendar.AddEntry("Monday", "Internal Meeting");
        calendar.AddEntry("Tuesday", "Party");
        calendar.AddEntry("Wednesday", "Liga");
        calendar.AddEntry("Thursday", "Enum Lecture");
        calendar.AddEntry("Friday", "Ready for take-off");
        var ordered = calendar.WeeklySchedule.OrderBy(n => n).ToList();

        foreach (var weeklyEntry in ordered)
        {
            Console.WriteLine(weeklyEntry);
        }
    }
    public static void Main()
    {
        WeeklyCalendar calendar = new WeeklyCalendar();

        calendar.AddEntry(Weekday.Monday.ToString(), "Internal meeting");
        calendar.AddEntry(Weekday.Tuesday.ToString(), "Create presentation");
        calendar.AddEntry(Weekday.Tuesday.ToString(), "Create lab and exercise");
        calendar.AddEntry(Weekday.Thursday.ToString(), "Enum Lecture");
        calendar.AddEntry(Weekday.Monday.ToString(), "Second internal meeting");

        var ordered = calendar.WeeklySchedule().OrderBy(n => n).ToList();

        foreach (var weeklyEntry in ordered)
        {
            Console.WriteLine(weeklyEntry);
        }
    }
        public void ClearCalendar_Should_RemoveAllCalendersFromList()
        {
            // Arrange
            var calendar1 = new AnnualCalendar();
            var calendar2 = new WeeklyCalendar();

            var quietPeriods = new QuietPeriods();

            quietPeriods.AddCalendar(calendar1);
            quietPeriods.AddCalendar(calendar2);

            // Act
            quietPeriods.ClearCalendars();

            // Assert
            Assert.Equal(0, quietPeriods.Count);
        }
Exemple #8
0
        /// <summary>
        /// Create a dummy Trigger
        /// </summary>
        /// <param name="name">Name</param>
        /// <param name="group">Group</param>
        /// <param name="jobKey">JobKey</param>
        /// <param name="cronExpression">unix cron expression</param>
        /// <param name="calendarName">unix cron expression</param>
        /// <returns>IOperableTrigger</returns>
        protected static IOperableTrigger CreateTrigger(string name, string group, JobKey jobKey, string cronExpression = "0 0 0 * * ?", string calendarName = "testCalendar")
        {
            var trigger =
                TriggerBuilder.Create()
                .ForJob(jobKey)
                .WithIdentity(name, group)
                .WithSchedule(CronScheduleBuilder.CronSchedule(cronExpression))
                .UsingJobData("testTrigger", "testTrigger")
                .WithDescription("TriggerTesting")
                .Build();

            var abstractTrigger = (AbstractTrigger)trigger;

            if (abstractTrigger != null)
            {
                var calendar = new WeeklyCalendar {
                    DaysExcluded = null
                };
                abstractTrigger.ComputeFirstFireTimeUtc(calendar);
                abstractTrigger.CalendarName = calendarName;
            }

            return(abstractTrigger ?? (IOperableTrigger)trigger);
        }
Exemple #9
0
 static void InitializeWeekly(WeeklyCalendar weeklyCalendar, IWeeklyCalendar calendar)
 {
     weeklyCalendar.TimeZone = TimeZoneInfo.FindSystemTimeZoneById(RegistryTimeZoneProvider.GetRegistryKeyNameByTimeZoneId(calendar.TimeZone));
     calendar.DaysOfWeekExcluded.ForEach(week => weeklyCalendar.SetDayExcluded(week, true));
     calendar.DaysOfWeekIncluded.ForEach(week => weeklyCalendar.SetDayExcluded(week, false));
 }
 public void Setup()
 {
     cal          = new WeeklyCalendar();
     cal.TimeZone = TimeZoneInfo.Utc; //assume utc if not specified.
 }
Exemple #11
0
        public static void TestQuarz()
        {
            #region 测试验证
            //  Common.Config.PropertiesParser.ReadFromFileResource("test.txt");
            // Run();
            //    Set();
            //     Console.Read();
            #endregion


            //  Quartzlog.LogManager.Adapter=new

            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();  //调度者


            WeeklyCalendar calendar = new WeeklyCalendar();
            calendar.SetDayExcluded(DayOfWeek.Thursday, true);      //设置每周五不能执行;


            HolidayCalendar daycalendar = new HolidayCalendar();
            daycalendar.AddExcludedDate(DateTime.Now);             //只取日   DateTime.Now.Day


            MonthlyCalendar monthcalendar = new MonthlyCalendar();
            monthcalendar.SetDayExcluded(16, true);                //只取月   DateTime.Now.Month

            AnnualCalendar annualCalendar = new AnnualCalendar();
            annualCalendar.SetDayExcluded(DateTime.Now, true);               //只取年月日   DateTime.Now.Year

            CronCalendar cronCalendar = new CronCalendar("* * * 17 6 ?");    //6月17 不执行

            scheduler.AddCalendar("mycalendar", calendar, true, true);       //设置每周五不能执行;
            scheduler.AddCalendar("mycalendar", daycalendar, true, true);    //某一天不执行
            scheduler.AddCalendar("mycalendar", monthcalendar, true, true);  //某每月某一天不执行
            scheduler.AddCalendar("mycalendar", annualCalendar, true, true); //每年某一月某一日不执行

            scheduler.AddCalendar("mycalendar", cronCalendar, true, true);   //每年某一月某一日不执行



            scheduler.Start();
            var job = JobBuilder.Create <LxshJob>().WithDescription("Job")
                      .WithIdentity("lxshJob", "lxshGroup")
                      .UsingJobData("userName", "Joblxsh")
                      .Build();                             //任务

            var job1 = JobBuilder.Create <LxshJob>().WithDescription("Job")
                       .WithIdentity("lxshJob", "lxshGroup")
                       .UsingJobData("userName", "Joblxsh1")
                       .Build();                        //任务

            var trigger = TriggerBuilder.Create().StartNow()
                          .WithDescription("trigger")
                          .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(10))
                          // .WithCalendarIntervalSchedule(x=>x.WithIntervalInYears(1))
                          //   .WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever())
                          .WithDailyTimeIntervalSchedule(x =>
            {
                x.OnDaysOfTheWeek(new DayOfWeek[2] {
                    DayOfWeek.Tuesday, DayOfWeek.Friday
                });                                                   //每周二或者周五执行
                x.OnEveryDay()
                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00)) //   八点开始
                .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(18, 00))  //    十八点开始
                .WithIntervalInSeconds(1);                            // 每1s执行一次
            })
                                                                      // .ModifiedByCalendar("mycalendar")
                          .Build();
            //秒分时日月
            var trigger1 = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").Build();       //1秒执行一次
            var trigger2 = TriggerBuilder.Create().WithCronSchedule("0 * * * * ?").Build();       //1分钟执行一次
            var trigger3 = TriggerBuilder.Create().WithCronSchedule("0 0/30 8-20 * * ?").Build(); //30分钟检查一次 8-20点
            var trigger4 = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").Build();

            // scheduler.ListenerManager.AddJobListener(new lxshJobLinstener(), GroupMatcher<JobKey>.AnyGroup());

            scheduler.ScheduleJob(job, trigger);  //开始调度任务
                                                  //    scheduler.GetTriggersOfJob(new JobKey("lxshJob")).Select(x =>x.Key.ToString() );
            Console.Read();

            #region WithCronSchedule
            //           --------------------------------------
            //   0 0 12 * * ? 每天12点触发

            //   0 15 10 ? **每天10点15分触发

            //   0 15 10 * * ? 每天10点15分触发

            //   0 15 10 * * ? *每天10点15分触发

            //   0 15 10 * * ? 2005 2005年每天10点15分触发

            // 0 * 14 * * ? 每天下午的 2点到2点59分每分触发

            // 0 0 / 5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)

            // 0 0 / 5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)

            // 0 0 - 5 14 * * ? 每天下午的 2点到2点05分每分触发

            // 0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发

            // 0 15 10 ? *MON - FRI 从周一到周五每天上午的10点15分触发

            // 0 15 10 15 * ? 每月15号上午10点15分触发

            // 0 15 10 L * ? 每月最后一天的10点15分触发

            // 0 15 10 ? *6L 每月最后一周的星期五的10点15分触发

            // 0 15 10 ? *6L 2002 - 2005 从2002年到2005年每月最后一周的星期五的10点15分触发

            // 0 15 10 ? *6#3         每月的第三周的星期五开始触发
            //    0 0 12 1 / 5 * ? 每月的第一个中午开始每隔5天触发一次

            // 0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)
            //--------------------------------------


            #endregion
        }
Exemple #12
0
 public void Setup()
 {
     cal = new WeeklyCalendar();
 }
 public WeeklyCalendarDto(WeeklyCalendar calendar) : base(calendar)
 {
     DaysExcluded = calendar.DaysExcluded.ToList();
     TimeZone     = new TimeZoneDto(calendar.TimeZone);
 }
Exemple #14
0
        private static async Task RunScheduler()
        {
            // 创建作业调度器
            ISchedulerFactory factory   = new StdSchedulerFactory();
            IScheduler        scheduler = await factory.GetScheduler();

            // 开始运行调度器
            await scheduler.Start();

            // 创建一个作业
            IJobDetail job = JobBuilder.Create <HelloJob>()
                             .WithIdentity("job1", "jobGroup1")
                             .StoreDurably()
                             .Build();

            // 设置trigger开始时间
            var startAt = DateTimeOffset.Now;

            // 排除一天中的时间范围不执行
            DailyCalendar dailyCalendar = new DailyCalendar(DateBuilder.DateOf(21, 0, 0).DateTime, DateBuilder.DateOf(22, 0, 0).DateTime);

            // 排除星期中的一天或多天
            WeeklyCalendar weeklyCalendar = new WeeklyCalendar();

            weeklyCalendar.SetDayExcluded(DayOfWeek.Friday, true);

            // 指定特定的日期,精确到天
            HolidayCalendar holidayCalendar = new HolidayCalendar();
            var             holidayDateTime = new DateTime(2018, 11, 11);

            holidayCalendar.AddExcludedDate(holidayDateTime);

            // 排除月份中的某天,可选值为1-31,精确到天
            MonthlyCalendar monthlyCalendar = new MonthlyCalendar();

            monthlyCalendar.SetDayExcluded(31, true);

            // 排除每年中的某天,精确到天
            AnnualCalendar annualCalendar = new AnnualCalendar();
            var            annualDateTime = new DateTime(2018, 11, 11);

            annualCalendar.SetDayExcluded(annualDateTime, true);

            // 使用表达式排除某些时间段不执行
            CronCalendar cronCalendar = new CronCalendar("* * * 24 3 ?");

            await scheduler.AddCalendar("calendar", cronCalendar, true, true);

            // trigger的附属信息
            var triggerDataMap = new JobDataMap();

            triggerDataMap.Add("name", "beck");

            // 创建触发器
            ITrigger trigger1 = TriggerBuilder.Create()
                                .WithIdentity("trigger1", "triggerGroup1")
                                .StartAt(DateBuilder.DateOf(18, 25, 40))
                                .WithDailyTimeIntervalSchedule(w => w
                                                               .WithRepeatCount(20)
                                                               .WithIntervalInSeconds(4)
                                                               .WithMisfireHandlingInstructionIgnoreMisfires())
                                //.WithSimpleSchedule(w => w
                                //                .WithRepeatCount(20)
                                //                .WithIntervalInHours(1)
                                //                .WithMisfireHandlingInstructionNowWithExistingCount())
                                .UsingJobData(triggerDataMap)
                                .WithPriority(3)
                                .Build();

            // 创建触发器
            ITrigger trigger2 = TriggerBuilder.Create()
                                .WithIdentity("trigger2", "triggerGroup1")
                                .StartAt(startAt)
                                .WithCronSchedule("* * * 24-25 3 ?")
                                .ForJob(job)
                                .UsingJobData(triggerDataMap)
                                .ModifiedByCalendar("calendar")
                                .WithPriority(7)
                                .Build();

            // 加入作业调度器中
            await scheduler.ScheduleJob(job, trigger1);

            await scheduler.ScheduleJob(trigger2);

            await Task.Delay(TimeSpan.FromMinutes(2));

            // 关闭scheduler
            await scheduler.Shutdown(true);
        }