/// <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); }
public void TestWeeklyCalendarSerialization() { WeeklyCalendar weeklyCalendar = new WeeklyCalendar(); weeklyCalendar.SetDayExcluded(DayOfWeek.Monday, true); WeeklyCalendar clone = weeklyCalendar.DeepClone(); Assert.IsTrue(clone.IsDayExcluded(DayOfWeek.Monday)); }
/// <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); }
/// <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); }
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. }
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 }
public void Setup() { cal = new WeeklyCalendar(); }
public WeeklyCalendarDto(WeeklyCalendar calendar) : base(calendar) { DaysExcluded = calendar.DaysExcluded.ToList(); TimeZone = new TimeZoneDto(calendar.TimeZone); }
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); }