Example #1
0
        /// <summary>
        /// Execute the <see cref="ECommand.GetServiceInfo"/> command.
        /// </summary>
        /// <param name="input">The input parameter.</param>
        /// <param name="output">The execute result.</param>
        protected override void ExecuteCore(FunctionSwitch input, GetServiceInfoOutput output)
        {
            if (input.Command == ECommand.GetServiceInfo)
            {
                var serviceInfo = new ServiceInfo();

                serviceInfo.EServiceStatus = GetStatus(input.ServiceType);
                serviceInfo.Enable         = serviceInfo.EServiceStatus != EServiceStatus.Pause;

                var trigger = Scheduler.GetTrigger(input.ServiceType);
                if (trigger != null)
                {
                    var cronBuilder = trigger as ICronTrigger;
                    serviceInfo.ScheduleInfo = JobCronExpressionConfig.GetCronExpression(trigger);
                    var prev = trigger.GetPreviousFireTimeUtc();
                    if (prev.HasValue)
                    {
                        serviceInfo.PrevFiredTime = prev.Value.LocalDateTime;
                    }

                    var next = trigger.GetNextFireTimeUtc();
                    if (next.HasValue)
                    {
                        serviceInfo.NextFiredTime = next.Value.LocalDateTime;
                    }
                }
                else
                {
                    serviceInfo.ScheduleInfo = string.Empty;
                }

                output.ServiceInfo = serviceInfo;
            }
        }
        /// <summary>
        /// Execute the <see cref="ECommand.ModifySchedule"/> command.
        /// </summary>
        /// <param name="input">The input parameter.</param>
        /// <param name="output">The execute result.</param>
        protected override void ExecuteCore(FunctionSwitch input, ExecuteResult output)
        {
            if (input.Command == ECommand.ModifySchedule)
            {
                var cronExpresion = input.ScheduleFormat;

                var trigger = Scheduler.GetTrigger(input.ServiceType);
                if (trigger != null)
                {
                    var cronBuilder = trigger as ICronTrigger;
                    JobCronExpressionConfig.SetCronExpression(trigger, cronExpresion);
                    cronBuilder.CronExpressionString = cronExpresion;
                    var newTrigger = cronBuilder.GetTriggerBuilder().Build();
                    Scheduler.PauseTrigger(trigger.Key);
                    Scheduler.RescheduleJob(trigger.Key, newTrigger);
                    Scheduler.ResumeTrigger(trigger.Key);
                }
            }
        }