public void AddSchedule(ScheduleEntry schedule) { if (!CronExpression.IsValidExpression(schedule.CronSchedule)) { _statsPlugin.IncrementState("schedules:invalidcron"); throw new InvalidConfigurationException("Cron expression is invalid"); } lock (_lock) { schedule.Created = DateTime.Now; ExecuteSchedule(schedule); _schedules.Add(schedule); _statsPlugin.IncrementState("schedules:added"); } Save(); }
private ResponseMessage CreateSchedule(IncomingMessage message, string command, string cronSchedule) { var schedule = new ScheduleEntry { Guid = Guid.NewGuid(), Channel = message.Channel, ChannelType = message.ChannelType, Command = command, CronSchedule = cronSchedule, UserId = message.UserId, UserName = message.Username, Created = DateTime.Now }; if (!CronExpression.IsValidExpression(cronSchedule)) { return message.ReplyToChannel($"Unknown cron schedule `'{cronSchedule}'`"); } if (string.IsNullOrEmpty(schedule.Command)) { return message.ReplyToChannel("Please enter a command to be scheduled."); } _schedulePlugin.AddSchedule(schedule); return message.ReplyToChannel($"Schedule created for command '{schedule.Command}'."); }
private void ExecuteSchedule(ScheduleEntry schedule) { IJobDetail job = JobBuilder.Create<ScheduledJob>() .UsingJobData("guid", schedule.Guid.ToString()) .WithIdentity(schedule.Guid.ToString()) .Build(); ITrigger trigger = TriggerBuilder.Create() .WithIdentity(new TriggerKey(schedule.Guid.ToString(), "job")) .WithCronSchedule(schedule.CronSchedule) .Build(); _scheduler.ScheduleJob(job, trigger); }