private void LoadOrphanJobs(SchedulerNode schedulerNode) { var orphanJobsIdx = schedulerNode.Nodes.Add(new OrphanJobsNode("Orphan Jobs")); var orphanJobs = (OrphanJobsNode)schedulerNode.Nodes[orphanJobsIdx]; var sched = schedulerNode.Scheduler; var groupNames = sched.GetJobGroupNames(); foreach (var jobGroupName in groupNames) { var matcher = GroupMatcher <JobKey> .GroupEquals(jobGroupName); var jobKeys = schedulerNode.Scheduler.GetJobKeys(matcher); foreach (var jobKey in jobKeys) { try { var triggers = schedulerNode.Scheduler.GetTriggersOfJob(jobKey); if (triggers.Count == 0) { var jobDetail = sched.GetJobDetail(jobKey); orphanJobs.Nodes.Add(new JobNode(jobDetail)); } } catch (Exception ex) { Log.Error("Error loading orphan jobs.", ex); schedulerNode.Nodes.Add(string.Format("Unable to add job {0})", jobKey.Name)); } } } }
private void LoadScheduledJobs() { var expNodePaths = SchedulerView.Nodes.GetExpansionState(); var selNodePath = SchedulerView.SelectedNode != null?SchedulerView.SelectedNode.GetNamesFullPath() : null; try { var schedulerNode = new SchedulerNode(mScheduler); if (SchedulerView.Nodes.ContainsKey(schedulerNode.Name)) { SchedulerView.Nodes.RemoveByKey(schedulerNode.Name); } SchedulerView.Nodes.Add(schedulerNode); var jobGroupsIdx = schedulerNode.Nodes.Add(new JobGroupsNode("Job Groups")); var jobGroupsNode = schedulerNode.Nodes[jobGroupsIdx]; var jobGroups = mScheduler.GetJobGroupNames(); foreach (var jobGroup in jobGroups) { var jobGroupNode = new JobGroupNode(jobGroup); jobGroupsNode.Nodes.Add(jobGroupNode); LoadJobNodes(jobGroupNode); } LoadOrphanJobs(schedulerNode); LoadCalendars(schedulerNode); } finally { SchedulerView.Nodes.SetExpansionState(expNodePaths); SchedulerView.SelectedNode = SchedulerView.Nodes.FindByNamesFullPath(selNodePath); SchedulerView_AfterSelect(this, new TreeViewEventArgs(SchedulerView.SelectedNode)); } }
private void LoadCalendars(SchedulerNode schedulerNode) { var calendarsIdx = schedulerNode.Nodes.Add(new CalendarsNode("Calendars")); var calendarsNode = (CalendarsNode)schedulerNode.Nodes[calendarsIdx]; var sched = schedulerNode.Scheduler; foreach (var calendarName in sched.GetCalendarNames()) { calendarsNode.Nodes.Add(new CalendarNode(calendarName)); } }
private void AddJobGroup(SchedulerNode schedulerNode, Action updateAction) { var existJobGroups = mScheduler.GetJobGroupNames(); var frm = new AddJobGroup(existJobGroups); if (frm.ShowDialog() != DialogResult.OK) { return; } var job = JobBuilder.Create <NoOpJob>(). WithDescription(string.Format("Empty job to ensure that {0} is created", frm.JobGroupName)). WithIdentity("NoOp job", frm.JobGroupName). StoreDurably(). Build(); mScheduler.AddJob(job, true); updateAction(); }