Пример #1
0
 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);
 }
Пример #2
0
        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)));
        }
Пример #3
0
        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));
        }