Scheduler
- First, set a shortcut to our Scheduler plugin
- set ($scheduler = $xwiki.scheduler)
- If the sheet is called with an action ($request.do), let us first process this action
- Possible values are : "schedule", "pause", "resume", "unschedule", "delete"
- if ("$!request.do" != && "$!request.which" != )
##
## Obtain the Job document and object for which the action has been called
##
#set ($tJobHolder = $request.which)
#set ($jobDoc = $xwiki.getDocument($tJobHolder))
#set ($jobObj = $jobDoc.getObject('XWiki.SchedulerJobClass'))
#if ($request.do == 'schedule')
##
## Schedule a job
##
#set ($ok = $scheduler.scheduleJob($jobObj))
#if (!$ok)
Predefinição:Error$xcontext.get('error')Predefinição:/error
#else
#set ($jobName = "$jobObj.get('jobName')")
Predefinição:Info$services.localization.render('xe.scheduler.jobscheduled', [$jobName, $scheduler.getNextFireTime($jobObj)])Predefinição:/info
#end
#elseif ($request.do == 'pause')
##
## Pause a scheduled job
##
#set ($ok = $scheduler.pauseJob($jobObj))
#if (!$ok)
Predefinição:Error$xcontext.get('error')Predefinição:/error
#else
Predefinição:Info$services.localization.render('xe.scheduler.paused', [$jobObj.get('jobName')])Predefinição:/info
#end
#elseif ($request.do == 'resume')
##
## Resume a paused job
##
#set ($ok = $scheduler.resumeJob($jobObj))
#if (!$ok)
Predefinição:Error$xcontext.get('error')Predefinição:/error
#else
Predefinição:Info$services.localization.render('xe.scheduler.resumed', [$jobObj.get('jobName'), $scheduler.getNextFireTime($jobObj)])Predefinição:/info
#end
#elseif ($request.do == 'unschedule')
##
## Unschedule a scheduled job (paused or not)
##
#set ($ok = $scheduler.unscheduleJob($jobObj))
#if (!$ok)
Predefinição:Error$xcontext.get('error')Predefinição:/error
#else
Predefinição:Info$services.localization.render('xe.scheduler.unscheduled', [$jobObj.get('jobName')])Predefinição:/info
#end
#elseif ($request.do == 'delete')
##
## Delete a job
## First unschedule it (if needed), then delete its document holder
##
#set ($jobName = $jobObj.get('jobName'))
#if ($jobObj.get('status') == 'Normal' || $jobObj.get('status') == 'Paused')
#set ($ok = $scheduler.unscheduleJob($jobObj))
#if ($ok)
#set ($deleteRedirect = $xwiki.getURL($jobObj.getName(), 'delete'))
$response.sendRedirect($deleteRedirect)
#else
Predefinição:Error$xcontext.get('error')Predefinição:/error
#end
#else
#set ($deleteRedirect = $xwiki.getURL($jobObj.getName(), 'delete'))
$response.sendRedirect($deleteRedirect))
#end
#elseif ($request.do == 'trigger')
##
## Trigger a job (execute it now)
##
#set ($ok = $scheduler.triggerJob($jobObj))
#if (!$ok)
Predefinição:Error$xcontext.get('error')Predefinição:/error
#else
Predefinição:Info$services.localization.render('xe.scheduler.triggered', [$jobObj.get('jobName')])Predefinição:/info
#end #end
- end
$services.localization.render('xe.scheduler.welcome')
$services.localization.render('xe.scheduler.jobs.list')
- Retrieve all scheduler jobs
- Display their name, status, possible next fire time, and available actions
|=(%scope="col"%)$services.localization.render('xe.scheduler.jobs.name')|=(%scope="col"%)$services.localization.render('xe.scheduler.jobs.status')|=(%scope="col"%)$services.localization.render('xe.scheduler.jobs.next')|=(%scope="col"%)$services.localization.render('xe.scheduler.jobs.actions')
- foreach ($docName in $services.query.xwql('from doc.object(XWiki.SchedulerJobClass) as jobs where doc.fullName <> XWiki.SchedulerJobTemplate').execute())
#set ($actions = {})
#set ($jobHolder = $xwiki.getDocument($docName))
#set ($job = $jobHolder.getObject('XWiki.SchedulerJobClass'))
#set ($status = $scheduler.getJobStatus($job).value)
#if ($status == )
#set ($status = 'None')
#end
#set ($firetime = )
#if ($status != 'None')
#set ($firetime = $scheduler.getNextFireTime($job))
#else
#set ($firetime = $services.localization.render('xe.scheduler.jobs.next.undefined'))
#end
#set ($ok = $!actions.put('trigger', $doc.getURL('view', "do=trigger&which=${jobHolder.fullName}")))
#if ($status == 'None')
#set ($ok = $!actions.put('schedule', $doc.getURL('view', "do=schedule&which=${jobHolder.fullName}")))
#elseif($status == 'Normal')
#set ($ok = $!actions.put('pause', $doc.getURL('view', "do=pause&which=${jobHolder.fullName}")))
#set ($ok = $!actions.put('unschedule', $doc.getURL('view', "do=unschedule&which=${jobHolder.fullName}")))
#elseif ($status == 'Paused')
#set ($ok = $!actions.put('resume', $doc.getURL('view', "do=resume&which=${jobHolder.fullName}")))
#set ($ok = $!actions.put('unschedule', $doc.getURL('view', "do=unschedule&which=${jobHolder.fullName}")))
#end
#set ($ok = $!actions.put('delete', $doc.getURL('view', "do=delete&which=${jobHolder.fullName}")))
|$job.get('jobName')|$status|$firetime|**$services.localization.render('xe.scheduler.jobs.actions.access')** [[$services.localization.render('xe.scheduler.jobs.actions.view')>>$jobHolder.fullName]]#if($jobHolder.hasAccessLevel('programming')) [[$services.localization.render('xe.scheduler.jobs.actions.edit')>>path:${jobHolder.getURL('edit')}]]#end **$services.localization.render('xe.scheduler.jobs.actions.manage')**#foreach($action in $actions.entrySet()) [[$services.localization.render("xe.scheduler.jobs.actions.${action.key}")>>path:${action.value}]]#end
- end
- if ($doc.hasAccessLevel('programming'))
- Job creation is offered only for programmers, because the job page needs to be saved
- with programming right for groovy jobs to be executed.
- However, this page should stay accessible to admins, that can manipulate existing jobs:
- schedule, pause, etc.
$services.localization.render('xe.scheduler.jobs.create')
- Form to create a new Job
Predefinição:Info$services.localization.render('xe.scheduler.jobs.explaincreate')Predefinição:/info
<form action="$doc.getURL('create')" id="newdoc">
<input type="hidden" name="form_token" value="$!{services.csrf.getToken()}" />
<input type="hidden" name="parent" value="Scheduler.WebHome" />
<input type="hidden" name="template" value="XWiki.SchedulerJobTemplate" />
<input type="hidden" name="sheet" value="1" />
<input type="hidden" name="space" value="Scheduler"/>
<label class="hidden" for="page">$services.localization.render('xe.scheduler.jobs.create.nameTip')</label>
<input id="page" name="page" size="30" type="text" class="withTip" value="$services.localization.render('xe.scheduler.jobs.create.nameTip')" />
</form>
- else
Predefinição:Warning$services.localization.render('xe.scheduler.jobs.warning')Predefinição:/warning
- end
