public JsonResult ScheduleJob(ScheduleJobInput input) { var status = new OperateStatus(); try { if (!input.ReplaceExists) { //if (RemoteShedulerManager.CheckExists(new TriggerKey(input.TriggerName, input.TriggerGroup))) //{ // status.Message = "指定的触发器已经存在,请重新指定名称"; // return Json(status); //} if (RemoteShedulerManager.CheckExists(new JobKey(input.JobName, input.JobGroup))) { status.Message = "指定的任务已经存在,请重新指定名称"; return(Json(status)); } } input.IsSave = true; RemoteShedulerManager.ScheduleJob(input); status.ResultSign = ResultSign.Successful; status.Message = "保存调度作业成功"; } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public JsonResult CalcRunTime(string cronExpression) { try { return(Json(RemoteShedulerManager.GetTaskeFireTime(cronExpression, 5))); } catch { return(null); } }
public JsonResult DeleteJob(JobDetailInput input) { var status = new OperateStatus(); if (RemoteShedulerManager.DeleteJob(input.JobName, input.JobGroup)) { status.ResultSign = ResultSign.Successful; status.Message = "删除作业成功"; } return(Json(status)); }
public JsonResult GetDetailJobDataMap(JobDetailInput input) { if (!input.JobGroup.IsNullOrEmpty() && !input.JobName.IsNullOrEmpty()) { var detail = RemoteShedulerManager.GetJobDetail(new JobKey(input.JobName, input.JobGroup)); var maps = detail.JobDataMap; return(Json(maps.Select(map => new Parameters { Key = map.Key, Value = map.Value }).ToList())); } return(null); }
public ViewResultBase CalendarEdit(string calendarName) { var model = new SystemQuartzCalendarModel(); if (!calendarName.IsNullOrEmpty()) { model.ReplaceExists = true; var calendar = (CronCalendar)RemoteShedulerManager.GetCalendar(calendarName); model.Expression = calendar.CronExpression.ToString(); model.Description = calendar.Description; } return(View(model)); }
public JsonResult GetCalendar() { var calendars = RemoteShedulerManager.GetCalendarNames().ToList().Select(n => new { Name = n, Calendar = RemoteShedulerManager.GetCalendar(n) }).ToDictionary(n => n.Name, n => n.Calendar); IList <SystemQuartzCalendarModel> calendarModels = calendars.Select(cal => new SystemQuartzCalendarModel { Description = cal.Value.Description, CalendarName = cal.Key }).ToList(); return(Json(calendarModels)); }
public JsonResult ResumeAll(JobDetailInput input) { var status = new OperateStatus(); try { RemoteShedulerManager.ResumeAll(); status.ResultSign = ResultSign.Successful; status.Message = "恢复作业成功"; } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public JsonResult PauseAll() { var status = new OperateStatus(); try { RemoteShedulerManager.PauseAll(); status.ResultSign = ResultSign.Successful; status.Message = "暂停所有作业成功"; } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public JsonResult PauseJob(JobDetailInput input) { var status = new OperateStatus(); try { RemoteShedulerManager.PauseJob(input.JobName, input.JobGroup); status.ResultSign = ResultSign.Successful; status.Message = "暂停作业成功"; } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public JsonResult GetAllJobs() { IList <SystemQuartzJobModel> models = new List <SystemQuartzJobModel>(); var jobGroups = RemoteShedulerManager.GetJobGroupNames(); foreach (string group in jobGroups) { var groupMatcher = GroupMatcher <JobKey> .GroupContains(group); var jobKeys = RemoteShedulerManager.GetJobKeys(groupMatcher); foreach (var jobKey in jobKeys) { var detail = RemoteShedulerManager.GetJobDetail(jobKey); var triggers = RemoteShedulerManager.GetTriggersOfJob(jobKey); foreach (ITrigger trigger in triggers) { var model = new SystemQuartzJobModel { JobGroup = group, JobName = jobKey.Name, JobDescription = detail.Description, TriggerState = "Complete", ClassName = detail.JobType.FullName }; model.TriggerName = trigger.Key.Name; model.TriggerGroupName = trigger.Key.Group; model.TriggerType = trigger.GetType().Name; model.TriggerState = RemoteShedulerManager.GetTriggerState(trigger.Key).ToString(); var nextFireTime = trigger.GetNextFireTimeUtc(); if (nextFireTime.HasValue) { model.NextFireTime = TimeZone.CurrentTimeZone.ToLocalTime(nextFireTime.Value.DateTime); } var previousFireTime = trigger.GetPreviousFireTimeUtc(); if (previousFireTime.HasValue) { model.PreviousFireTime = TimeZone.CurrentTimeZone.ToLocalTime(previousFireTime.Value.DateTime); } models.Add(model); } } } return(Json(models.OrderBy(o => o.NextFireTime))); }
public JsonResult DeleteCalendar(string calendarName) { var status = new OperateStatus(); try { if (RemoteShedulerManager.DeleteCalendar(calendarName)) { status.ResultSign = ResultSign.Successful; status.Message = "删除日历成功"; } } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public JsonResult SaveCalendar(CalendarInput input) { var status = new OperateStatus(); try { if (!input.ReplaceExists && RemoteShedulerManager.GetCalendar(input.CalendarName) != null) { status.Message = "日历已存在,请换个其它名称或选择替换现有日历"; return(Json(status)); } RemoteShedulerManager.AddCalendar(input); status.ResultSign = ResultSign.Successful; status.Message = "保存日历成功"; } catch (Exception ex) { status.Message = ex.Message; } return(Json(status)); }
public ViewResultBase JobEdit(JobDetailInput input) { var output = new SystemQuartzOutput(); if (!input.JobName.IsNullOrEmpty() && !input.JobGroup.IsNullOrEmpty()) { var key = new JobKey(input.JobName, input.JobGroup); //作业详情 var detal = RemoteShedulerManager.GetJobDetail(key); //触发器 var triggerKey = new TriggerKey(input.TriggerName, input.TriggerGroup); var trigger = RemoteShedulerManager.GetTrigger(triggerKey); output.JobType = detal.JobType.FullName; output.JobGroup = detal.Key.Group; output.JobName = detal.Key.Name; output.JobDescription = detal.Description; output.TriggerType = trigger.GetType().Name; output.TriggerName = trigger.Key.Name; output.TriggerGroup = trigger.Key.Group; output.TriggerDescription = trigger.Description; //获取trigger类型 switch (trigger.GetType().Name) { case "SimpleTriggerImpl": var simpleTriggerImpl = (SimpleTriggerImpl)trigger; output.Interval = simpleTriggerImpl.RepeatInterval; break; case "CronTriggerImpl": //获取表达式 var cronTriggerImpl = (CronTriggerImpl)trigger; output.Cron = cronTriggerImpl.CronExpressionString; break; } output.ReplaceExists = true; } return(View(output)); }
/// <summary> /// 日历 /// </summary> /// <param name="htmlHelper"></param> /// <param name="input"></param> /// <returns></returns> public static MvcHtmlString LoadQuartzCalendar(this HtmlHelper htmlHelper, BaseDropDownListInput input) { StringBuilder stringBuilder = new StringBuilder(2000); stringBuilder.Append("<select id='" + input.Id + "' name='" + input.Name + "'" + input.HtmlAttributes + ">"); if (input.NeedDefault) { stringBuilder.Append("<option value=''>===请选择===</option>"); } var calendars = RemoteShedulerManager.GetCalendarNames().ToList().Select(n => new { Name = n, Calendar = RemoteShedulerManager.GetCalendar(n) }).ToDictionary(n => n.Name, n => n.Calendar); foreach (var item in calendars) { if (input.SelectedVal != null) { if (item.Key == input.SelectedVal) { stringBuilder.Append(" <option value='" + item.Key + "' selected='selected'>" + item.Key + "</option> "); } else { stringBuilder.Append(" <option value='" + item.Key + "' >" + item.Key + "</option> "); } } else { stringBuilder.Append(" <option value='" + item.Key + "' >" + item.Key + "</option> "); } } stringBuilder.Append("</select>"); return(new MvcHtmlString(stringBuilder.ToString())); }