/// <summary> /// Get fire instances of currently executing jobs. /// </summary> /// <returns></returns> public IEnumerable <FireInstance> GetExecutingJobs() { IList <FireInstance> retval = new List <FireInstance>(); var executingJobs = _scheduler.GetCurrentlyExecutingJobs(); foreach (var executingJob in executingJobs) { retval.Add(new FireInstance { FireTimeUtc = executingJob.Trigger.GetPreviousFireTimeUtc(), JobName = executingJob.JobDetail.Key.Name, JobGroup = executingJob.JobDetail.Key.Group, TriggerName = executingJob.Trigger.Key.Name, TriggerGroup = executingJob.Trigger.Key.Group, JobId = _persistenceStore.GetJobId(executingJob.JobDetail.Key) }); } return(retval); }
/// <summary> /// Get job details of type <see cref="jobType"/>. /// Get all the job details if <see cref="jobType"/> is not specified /// </summary> /// <param name="authorizedJobGroups"> List of job groups user is authorized for</param> /// <param name="jobType"></param> /// <returns></returns> public IDictionary <IJobDetail, Guid> GetJobDetails(IEnumerable <string> authorizedJobGroups, Type jobType = null)// , Dictionary<string, string> identities = null { IDictionary <IJobDetail, Guid> jobDetails = new Dictionary <IJobDetail, Guid>(); // Map user or roles to list of job groups // Only get job if user or role is related to job group IList <string> jobGroups = _scheduler.GetJobGroupNames(); // If user has job group access to '*' wildcard, get all jobs authorizedJobGroups = authorizedJobGroups.ToList(); jobGroups = (IList <string>)(authorizedJobGroups.Contains("*") ? jobGroups : authorizedJobGroups); foreach (string group in jobGroups) { if (!jobGroups.Contains(@group)) { continue; } var groupMatcher = GroupMatcher <JobKey> .GroupEquals(group); var jobKeys = _scheduler.GetJobKeys(groupMatcher); foreach (var jobKey in jobKeys) { var jobId = _persistenceStore.GetJobId(jobKey); var detail = _scheduler.GetJobDetail(jobKey); if (null == jobType) { jobDetails.Add(detail, jobId); } else { if (jobType == detail.JobType) { jobDetails.Add(detail, jobId); } } } } return(jobDetails); }