Esempio n. 1
0
        private void ScheduleJob(ISwJob job)
        {
            var groupToResume = _scheduler.GetJobGroupNames();

            foreach (var group in groupToResume)
            {
                var groupMatcher = GroupMatcher <JobKey> .GroupContains(group);

                var jobKeys = _scheduler.GetJobKeys(groupMatcher);
                foreach (var jobKey in jobKeys)
                {
                    var detail = _scheduler.GetJobDetail(jobKey);
                    if (detail.JobType != job.GetType())
                    {
                        continue;
                    }
                    var triggers = _scheduler.GetTriggersOfJob(jobKey);
                    foreach (ITrigger triggerResume in triggers)
                    {
                        if (_scheduler.GetTriggerState(triggerResume.Key) != TriggerState.Paused)
                        {
                            continue;
                        }
                        _scheduler.ResumeTrigger(triggerResume.Key);
                        _scheduler.ResumeJob(detail.Key);
                    }
                }
            }
        }
Esempio n. 2
0
        private void ChangeCron(ISwJob job, string cronExpression)
        {
            var groupToChangeCron = _scheduler.GetJobGroupNames();

            foreach (var group in groupToChangeCron)
            {
                var groupMatcher = GroupMatcher <JobKey> .GroupContains(@group);

                var jobKeys = _scheduler.GetJobKeys(groupMatcher);
                foreach (var jobKey in jobKeys)
                {
                    var detail = _scheduler.GetJobDetail(jobKey);
                    if (detail.JobType != job.GetType())
                    {
                        continue;
                    }
                    var triggers = _scheduler.GetTriggersOfJob(jobKey);
                    foreach (ITrigger triggerResume in triggers)
                    {
                        var trigger = (ICronTrigger)TriggerBuilder.Create()
                                      .WithIdentity(job.Name() + "Trigger", GroupName)
                                      .WithCronSchedule(cronExpression)
                                      .Build();

                        var currentState = _scheduler.GetTriggerState(triggerResume.Key);
                        _scheduler.RescheduleJob(triggerResume.Key, trigger);
                        if (currentState != TriggerState.Paused)
                        {
                            continue;
                        }
                        _scheduler.PauseTrigger(trigger.Key);
                        _scheduler.PauseJob(detail.Key);
                    }
                }
            }
        }