private string GetSimpleTriggerTypeMessage(SimpleTriggerType simpleTriggerType) { string triggerTypeMessage = "repeat"; if (simpleTriggerType.RepeatCount != -1) { triggerTypeMessage += simpleTriggerType.RepeatCount + " times "; } triggerTypeMessage += "every "; double diff = simpleTriggerType.RepeatInterval; var parts = new[, ] { { "day", "days", "86400000"//1000*60*60*24 }, { "hour", "hours", "3600000"//1000*60*60 }, { "minute", "min", "6000"//1000*60 }, { "second", "sec", "1000"//1000 } }; List <string> messagesParts = new List <string>(); for (int i = 0; i < parts.GetLongLength(0); i++) { string multiplier = parts[i, 2]; var currentPartValue = Math.Floor(diff / Convert.ToDouble(multiplier)); diff -= currentPartValue * Convert.ToDouble(multiplier); if (currentPartValue == 1) { messagesParts.Add(parts[i, 0]); } else if (currentPartValue > 1) { messagesParts.Add(currentPartValue + " " + parts[i, 1]); } } triggerTypeMessage += string.Join(", ", messagesParts.ToArray()); return(triggerTypeMessage); }
public void TriggerJob( string jobName, string jobGroup, string triggerName, TriggerType trigger, IDictionary <string, object> jobData) { TriggerBuilder triggerBuilder = TriggerBuilder .Create() .ForJob(jobName, jobGroup); if (!string.IsNullOrEmpty(triggerName)) { triggerBuilder = triggerBuilder.WithIdentity(triggerName); } SimpleTriggerType simpleTrigger = trigger as SimpleTriggerType; if (simpleTrigger != null) { triggerBuilder = triggerBuilder.WithSimpleSchedule(x => { if (simpleTrigger.RepeatCount == -1) { x.RepeatForever(); } else { x.WithRepeatCount(simpleTrigger.RepeatCount); } x.WithInterval(TimeSpan.FromMilliseconds(simpleTrigger.RepeatInterval)); }); } else { CronTriggerType cronTriggerType = trigger as CronTriggerType; if (cronTriggerType != null) { triggerBuilder = triggerBuilder.WithCronSchedule(cronTriggerType.CronExpression); } } if (jobData != null) { triggerBuilder = triggerBuilder.UsingJobData(new JobDataMap(jobData)); } _scheduler.ScheduleJob(triggerBuilder.Build()); }
private static TriggerType CreateTriggerType(AddTriggerInput input) { switch (input.TriggerType) { case "Simple": var simpleTriggerType = new SimpleTriggerType(input.RepeatForever ? -1 : input.RepeatCount, input.RepeatInterval, 0 /* todo */); return(simpleTriggerType); case "Cron": var cronTriggerType = new CronTriggerType(input.CronExpression); return(cronTriggerType); default: throw new ArgumentOutOfRangeException(); } }
public void Execute_InfiniteSimpleTrigger_ShouldPassTriggerData() { AssertTriggerType( new AddTriggerInput { Job = "Default", TriggerType = "Simple", RepeatCount = 1, RepeatForever = true, RepeatInterval = 3 }, type => { Assert.That(type, Is.InstanceOf <SimpleTriggerType>()); SimpleTriggerType simpleTriggerType = (SimpleTriggerType)type; Assert.That(simpleTriggerType.RepeatCount, Is.EqualTo(-1)); Assert.That(simpleTriggerType.RepeatInterval, Is.EqualTo(3)); }); }
void SimpleTriggerDisplay_Load(object sender, EventArgs e) { lblDescription.Text = _triggerData.Description; lblGroup.Text = _triggerData.GroupName; lblName.Text = _triggerData.Name; lblStartTime.Text = _triggerData.StartDate.ToString("yyyy/MM/dd HH:mm:ss"); if (_triggerData.EndDate.HasValue) { lblEndTime.Text = Convert.ToDateTime(_triggerData.EndDate).ToString("yyyy/MM/dd HH:mm:ss"); } else { lblEndTime.Text = string.Empty; } if (_triggerData.NextFireDate.HasValue) { lblNextFireTime.Text = Convert.ToDateTime(_triggerData.NextFireDate).ToString("yyyy/MM/dd HH:mm:ss"); } else { lblNextFireTime.Text = string.Empty; } if (_triggerData.PreviousFireDate.HasValue) { lblPreviousFireTime.Text = Convert.ToDateTime(_triggerData.PreviousFireDate).ToString("yyyy/MM/dd HH:mm:ss"); } else { lblPreviousFireTime.Text = string.Empty; } SimpleTriggerType triggerType = (SimpleTriggerType)_triggerData.TriggerType; lblRepeatCount.Text = triggerType.RepeatCount.ToString(); lblRepeatInterval.Text = triggerType.RepeatInterval.ToString(); }
private void loadRunningJobs() { try { this.Cursor = Cursors.WaitCursor; timer_Refresh_Running_Jobs.Stop(); listView_RunningJobs.Items.Clear(); var jobGroups = _schedulerDataProvider.Data.JobGroups; this.listView_RunningJobs.BeginUpdate(); foreach (var jobGroup in jobGroups) { foreach (var job in jobGroup.Jobs) { string jobName = job.UniqueName.Split('_')[1]; string jobGroupName = job.GroupName; foreach (var trigger in job.Triggers) { string triggerName = trigger.Name; string startDate = trigger.StartDate.ToString("yyyy-MM-dd HH:mm:ss"); string endDate = string.Empty; if (trigger.EndDate.HasValue) { endDate = Convert.ToDateTime(trigger.EndDate).ToString("yyyy-MM-dd HH:mm:ss"); } string previousFireDate = string.Empty; if (trigger.PreviousFireDate.HasValue) { previousFireDate = Convert.ToDateTime(trigger.PreviousFireDate).ToString("yyyy-MM-dd HH:mm:ss"); } string nextFireDate = string.Empty; if (trigger.NextFireDate.HasValue) { nextFireDate = Convert.ToDateTime(trigger.NextFireDate).ToString("yyyy-MM-dd HH:mm:ss"); } string triggerTypeMessage = string.Empty; if (trigger.TriggerType.Code == "cron") { CronTriggerType triggerType = (CronTriggerType)trigger.TriggerType; triggerTypeMessage = triggerType.CronExpression; } else if (trigger.TriggerType.Code == "simple") { SimpleTriggerType triggerType = (SimpleTriggerType)trigger.TriggerType; triggerTypeMessage = GetSimpleTriggerTypeMessage(triggerType); } ListViewItem item = new ListViewItem(new[] { jobName, jobGroupName, triggerName, trigger.GroupName, triggerTypeMessage, startDate, //endDate, previousFireDate, nextFireDate, trigger.Status.ToString() }); listView_RunningJobs.Items.Add(item); } } } for (int i = 0; i < listView_RunningJobs.Columns.Count; i++) { listView_RunningJobs.Columns[i].Width = -1; } this.listView_RunningJobs.EndUpdate(); int timer_was = timer_Refresh_Running_Jobs.Interval; timer_Refresh_Running_Jobs.Interval = timer_was + 1; timer_Refresh_Running_Jobs.Interval = timer_was; timer_Refresh_Running_Jobs.Start(); } catch (Exception exception) { throw exception; } finally { this.Cursor = Cursors.Default; } }