Skip to content

Instantly share code, notes, and snippets.

@jonbartels
Created May 6, 2023 14:36
Show Gist options
  • Save jonbartels/27b09865b2b48051920564af83fca09e to your computer and use it in GitHub Desktop.
Save jonbartels/27b09865b2b48051920564af83fca09e to your computer and use it in GitHub Desktop.
A hastily written script to enumerate the Quartz scheduler jobs from Mirth Connect in a JS reader or JS step and return JSON
var dump = {};
var factory = new org.quartz.impl.StdSchedulerFactory();
var allSchedulers = factory.getAllSchedulers();
dump.schedulerCount = allSchedulers.size();
dump.schedulers = [];
var iter = allSchedulers.iterator();
while(iter.hasNext()){
var scheduler = iter.next();
var schedulerDetail = {};
schedulerDetail.summary = scheduler.getMetaData().getSummary();
schedulerDetail.groups = [];
var groupNames = scheduler.getJobGroupNames();
var groupIter = groupNames.iterator();
while(groupIter.hasNext()){
var groupName = groupIter.next();
var groupDetails = {};
groupDetails.groupName = groupName;
groupDetails.jobs = [];
var jobKeys = scheduler.getJobKeys(org.quartz.impl.matchers.GroupMatcher.jobGroupEquals(groupName));
var jobIter = jobKeys.iterator();
while(jobIter.hasNext()){
var job = jobIter.next();
var jobName = job.getName();
var jobGroup = job.getGroup(); //shouldn't this match groupname?
var jobDetails = {};
jobDetails.jobName = jobName;
jobDetails.jobGroup = jobGroup;
var triggers = scheduler.getTriggersOfJob(job);
jobDetails.triggerCount = triggers.size();
var nextTriggerDate = triggers.get(0).getNextFireTime(); //Java Date
var tz = java.util.TimeZone.getTimeZone("UTC");
var df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); // Quoted "Z" to indicate UTC, no timezone offset
df.setTimeZone(tz);
jobDetails.nextTriggerDate = df.format(nextTriggerDate);
groupDetails.jobs.push(jobDetails);
}
schedulerDetail.groups.push(groupDetails);
}
dump.schedulers.push(schedulerDetail);
}
return JSON.stringify(dump);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment