Beispiel #1
0
        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));
                    }
                }
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        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();
        }