Zdrojový kód wiki ActiveJobs


Show last authors
1 {{tree}}
2
3 {{groovy}}
4 xwiki.get("ssx").use("XWiki.ActiveJobs");
5
6 def jobExecutor = services.component.getInstance(org.xwiki.job.JobExecutor.class);
7
8 def jobs = new TreeMap(new Comparator<Object>() {
9 public int compare(def one, def two) {
10 return one.toString().compareTo(two.toString());
11 }
12 });
13
14 // Note: Using private fields that are not exposed in APIs.
15 jobs.putAll(jobExecutor.groupExecutors);
16 jobs.putAll(jobExecutor.jobs);
17
18 for (def path : jobs.keySet()) {
19 def pathJobOrExecutor = jobs.get(path);
20 def isGroup = pathJobOrExecutor.getClass().getSimpleName().equals("JobGroupExecutor");
21
22 if (isGroup) {
23 println "* [Group] " + path;
24 println "** executor: " + pathJobOrExecutor;
25
26 def currentJob = pathJobOrExecutor.currentJob;
27 if (currentJob != null) {
28 displayJob(currentJob, "***");
29 }
30
31 def queue = pathJobOrExecutor.getQueue();
32 println "*** Queue size: " + queue.size()
33 queue.each {
34 println "**** " + getJobName(it);
35 }
36 } else {
37 displayJob(pathJobOrExecutor, "*");
38 }
39 }
40
41 def getJobName(def job) {
42 def result = "null";
43 if (job != null) {
44 result = org.apache.commons.lang3.StringUtils.join(job.getRequest().getId(), "/") + " (" + job.getClass().getName() + ")";
45 }
46 return result;
47 }
48
49 def displayJob(def job, def indentation) {
50 println indentation + " [Job] " + getJobName(job)
51 def jobStatus = job.getStatus();
52
53 println indentation + "* Started at: " + jobStatus.getStartDate();
54
55 def question = jobStatus.getQuestion();
56 if (question != null) {
57 println indentation + "* Question: " + question
58 println indentation + "* Question ends in: " + ((long) (jobStatus.getQuestionTimeLeft(java.util.concurrent.TimeUnit.SECONDS)/1000000000)) + "s";
59 }
60 if (jobStatus instanceof org.xwiki.job.event.status.CancelableJobStatus) {
61 def isCancelable = jobStatus.isCancelable()
62 println indentation + "* Cancelable: " + isCancelable;
63 }
64 }
65 {{/groovy}}
66
67 {{tree}}