Scheduler library
Contents
Functions for creating and managing scheduled jobs.
Usage
Add the following to your build.gradle file:
dependencies {
include xplibs.scheduler
}
Add the import statement to your code:
import schedulerLib from '/lib/xp/scheduler';
You are now ready to use the API.
Functions
get
Returns a scheduled job with the specified name.
Parameters
get() takes a single params object with these properties:
| Name | Type | Description |
|---|---|---|
|
name |
string |
Name of the job. |
Returns
object : (ScheduledJob) Detail information for the job. Or null if the job could not be found.
Example
import {get as getJob} from '/lib/xp/scheduler';
const job = getJob({ name: 'myjob' });
if (job) {
log.info('Job is found: %s', JSON.stringify(job, null, 4));
} else {
log.info('Job not found');
}
const expected = {
name: 'myjob',
descriptor: 'com.enonic.app.myapp:mytask',
description: 'cron job description',
enabled: true,
config: {
a: 1,
b: 'value',
c: {
d: {
e: 3.6,
f: true
}
}
},
user: 'user:system:user',
creator: 'user:system:creator',
modifier: 'user:system:creator',
createdTime: '2016-11-02T10:36:00Z',
modifiedTime: '2016-11-02T10:36:00Z',
lastRun: '2021-02-25T10:44:33.170079900Z',
lastTaskId: 'task-id',
schedule: {
value: '* * * * *',
type: 'CRON',
timeZone: 'GMT+2:00'
}
};
list
Returns the list of scheduled jobs.
Returns
Array : (ScheduledJob[]) List of all scheduled jobs.
Example
import {list} from '/lib/xp/scheduler';
const jobs = list();
const expected = [
{
name: 'job1',
descriptor: 'appKey:task',
description: 'job description',
enabled: true,
config: {
a: 1
},
user: 'user:system:user',
creator: 'user:system:creator',
modifier: 'user:system:creator',
createdTime: '2016-11-02T10:36:00Z',
modifiedTime: '2016-11-02T10:36:00Z',
lastRun: '2021-02-25T10:44:00.170079900Z',
lastTaskId: 'task-id',
schedule: {
value: '* * * * *',
timeZone: 'GMT+05:30',
type: 'CRON'
}
},
{
name: 'job2',
descriptor: 'appKey:task',
description: 'job description',
enabled: false,
config: { },
user: 'user:system:user',
creator: 'user:system:creator',
modifier: 'user:system:creator',
createdTime: '2021-02-02T10:36:00Z',
modifiedTime: '2021-02-02T10:36:00Z',
schedule: {
value: '2012-01-01T00:00:00Z',
type: 'ONE_TIME'
}
}
];
create
Creates a scheduled job.
| This function returns immediately. |
Parameters
create() takes a single params object with these properties:
| Name | Type | Description |
|---|---|---|
|
name |
string |
Unique job name. |
|
description |
string |
Optional. Job description. |
|
descriptor |
string |
Descriptor of the task to be scheduled. |
|
config |
object |
Optional. Config passed to the scheduled task. |
|
schedule |
When the task runs. |
|
|
user |
string |
Optional. Principal key of the user that submitted the task. |
|
enabled |
boolean |
Whether the job is active. |
Returns
object : (ScheduledJob) Detail information for the created job.
Example
import {create} from '/lib/xp/scheduler';
const simpleOneTimeJob = create({
name: 'my-project',
descriptor: 'appKey:task',
enabled: true,
schedule: {type: 'ONE_TIME', value: '2012-01-01T00:00:00.00Z'}
});
const extendedCronJob = create({
name: 'myjob',
descriptor: 'appKey:task',
description: 'job description',
user: 'user:system:user',
enabled: true,
config: {
a: 1,
b: 2,
c: ['1', '2'],
d: {
e: {
f: 3.6,
g: true
}
}
},
schedule: {type: 'CRON', value: '* * * * 5', timeZone: 'GMT-2:00'}
});
const expectedSimpleOneTimeJob = {
name: 'my-project',
descriptor: 'appKey:task',
enabled: true,
config: {},
creator: 'user:system:creator',
modifier: 'user:system:creator',
createdTime: '2016-11-02T10:36:00Z',
modifiedTime: '2016-11-02T10:36:00Z',
schedule: {
value: '2012-01-01T00:00:00Z',
type: 'ONE_TIME'
}
}
const expectedExtendedCronJob = {
name: 'myjob',
descriptor: 'appKey:task',
description: 'job description',
enabled: true,
config: {
a: 1,
b: 2,
c: ['1', '2'],
d: {
e: {
f: 3.6,
g: true
}
}
},
user: 'user:system:user',
creator: 'user:system:creator',
modifier: 'user:system:creator',
createdTime: '2016-11-02T10:36:00Z',
modifiedTime: '2016-11-02T10:36:00Z',
schedule: {
value: '* * * * 5',
timeZone: 'GMT-02:00',
type: 'CRON'
}
}
modify
Modifies a job.
The previous task will be rescheduled, lastRun and lastTaskId properties will be cleaned. |
Parameters
modify() takes a single params object with these properties:
| Name | Type | Description |
|---|---|---|
|
name |
string |
Unique job name. |
|
editor |
function |
Editor callback. Receives the existing job as an editable object and returns it. See the example. |
Returns
object : (ScheduledJob) Detail information for the modified job.
Example
import {modify} from '/lib/xp/scheduler';
const result = modify({
name: 'myjob',
editor: (edit) => {
edit.descriptor = 'appKey:new-task';
edit.description = 'new job description';
edit.user = 'user:system:new-user';
edit.enabled = false;
edit.config = {
a1: 3
};
edit.schedule = {type: 'CRON', value: '* * * * *', timeZone: 'GMT+5:30'};
return edit;
}
});
const resultExpected = {
name: 'myjob',
descriptor: 'appKey:new-task',
description: 'new job description',
enabled: false,
config: {
a1: 3
},
user: 'user:system:new-user',
creator: 'user:system:creator',
modifier: 'user:system:modifier',
createdTime: '2016-11-02T10:36:00Z',
modifiedTime: '2021-02-25T10:44:33.170079900Z',
schedule: {
value: '* * * * *',
timeZone: 'GMT+05:30',
type: 'CRON'
}
}
deleteJob
Deletes a scheduled job.
Renamed from delete to avoid the JavaScript reserved word. The old delete export is still available for backward compatibility. |
Parameters
deleteJob() takes a single params object with these properties:
| Name | Type | Description |
|---|---|---|
|
name |
string |
Name of the job to delete. |
Returns
boolean : true if deleted, false otherwise
Example
import {deleteJob} from '/lib/xp/scheduler';
const result = deleteJob({
name: 'myjob'
});
if (result) {
log.info('Job deleted');
} else {
log.info('Job was not found');
}
Type Definitions
ScheduledJob
Type
object
Properties
| Name | Type | Description |
|---|---|---|
|
name |
string |
Job name. |
|
description |
string |
Job description. |
|
descriptor |
string |
Descriptor of the scheduled task. |
|
config |
object |
Config passed to the scheduled task. |
|
schedule |
When the task runs. |
|
|
user |
string |
Principal key of the user that submitted the task. |
|
enabled |
boolean |
Whether the job is active. |
|
creator |
string |
Principal key of the user that created the task. |
|
modifier |
string |
Principal key of the last user that modified the task. |
|
createdTime |
string |
Time of the task creation. |
|
modifiedTime |
string |
Time of the last task modification. |
|
lastRun |
string |
Time of the last job run. |
|
lastTaskId |
string |
Task id of the last job run. |
Schedule
Properties
| Name | Type | Description |
|---|---|---|
|
value |
string |
Schedule value, in the format required by |
|
type |
string |
Schedule type: |
|
timeZone |
string |
Time zone of the cron schedule. Required when |