/// <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); } } }