コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
        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));
            });
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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;
            }
        }