Scheduler API
Contents
Functions for creating and managing scheduled jobs.
Usage
Add the following to your build.gradle file:
dependencies {
  include "com.enonic.xp:lib-scheduler:${xpVersion}"
}
    Add the import statement to your controller:
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
| Name | Type | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 
         params  | 
       
         object  | 
       
         JSON with the parameters 
  | 
      
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
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
         params  | 
       
         object  | 
       
         JSON with the parameters 
  | 
      
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: '2021-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: {
            0: '1',
            1: '2'
        },
        d: {
            e: {
                f: 3.6,
                g: true
            }
        }
    },
    user: 'user:system:user',
    creator: 'user:system:creator',
    modifier: 'user:system:creator',
    createdTime: '2021-01-01T10:36:00Z',
    modifiedTime: '2016-01-01T10: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
| Name | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
         params  | 
       
         object  | 
       
         JSON with the parameters 
  | 
      
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'
    }
}
     delete
Deletes a scheduled job.
Parameters
| Name | Type | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 
         params  | 
       
         object  | 
       
         JSON with the parameters 
  | 
      
Returns
boolean : true if deleted, false otherwise
Example
import {delete as 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 task to be scheduled  | 
      ||||||||||||
| 
         config  | 
       
         object  | 
       
         config of the task to be scheduled  | 
      ||||||||||||
| 
         schedule  | 
       
         object  | 
       
         task time run config 
  | 
      ||||||||||||
| 
         user  | 
       
         string  | 
       
         principal key of the user that submitted the task  | 
      ||||||||||||
| 
         enabled  | 
       
         boolean  | 
       
         job is active or not  | 
      ||||||||||||
| 
         creator  | 
       
         string  | 
       
         principal key of 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  |