Execute Scheduled Jobs From UI Action

Ramananth1
Giga Contributor

Hello Everyone,

I have a requirement like I need to trigger 5 scheduled jobs from UI Action(List Banner Button) script.

For that I have written the script, but the issue i am facing is the while loop is taking only one sys_id from among the 5 scheduled jobs sys_ids.

Please need a suggestion on this to trigger all the queried sys_ids

UI Action Script :

runScript();

function runScript() {
var gr = new GlideRecord('sysauto_script');
gr.addEncodedQuery('sys_idIN690f3396db61d014b4dbb5b9689619f7,b7c91c1cdbad5850ae12ebd848961961,5f4f9f93db559810ae12ebd8489619a7,f701102fdb51d810ae12ebd8489619b6,1a9199abdb511c10ae12ebd84896199d');
gr.query();
while (gr.next()) {
SncTriggerSynchronizer.executeNow(gr);
}

}

Thanks & Regards

Ramananth

1 ACCEPTED SOLUTION

Hi,

nope

1 event, 1 script action

for event - don't give any table

Note: this is just an assumption that the job would complete in 5mins as there is dependency between those jobs; you give approx your time

Sample UI action script:

Note: Ensure you give valid scheduled job sys_id in the parameter

runScript();

function runScript() {

// for 1st job
var gdt = new GlideDateTime();
gdt.addSeconds(300);
gs.eventQueueScheduled("your_event_name", '', job1SysId ,gs.getUserName(),gdt);

// for 2nd job
var gdt = new GlideDateTime();
gdt.addSeconds(600);
gs.eventQueueScheduled("your_event_name", '', job2SysId ,gs.getUserName(),gdt);

// for 3rd job
var gdt = new GlideDateTime();
gdt.addSeconds(900);
gs.eventQueueScheduled("your_event_name", '', job3SysId ,gs.getUserName(),gdt);

// for 4th job
var gdt = new GlideDateTime();
gdt.addSeconds(1200);
gs.eventQueueScheduled("your_event_name", '', job4SysId ,gs.getUserName(),gdt);

// for 5th job
var gdt = new GlideDateTime();
gdt.addSeconds(1500);
gs.eventQueueScheduled("your_event_name", '', job5SysId ,gs.getUserName(),gdt);

}

Sample Script Action Script

var jobSysId = event.parm1; // this gives you job sys_id sent when event triggered

var gr = new GlideRecord('sysauto_script');
gr.addQuery('sys_id', jobSysId);
gr.query();
if(gr.next()) {
SncTriggerSynchronizer.executeNow(gr);
}

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

18 REPLIES 18

Hi,

Hope you are doing good.

Let me know if that answered your question.

If so, please mark appropriate response as correct & helpful so that this thread can be closed and others can be benefited by this.

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur,

Getting the RowCount as 5 and the jobs are not in the queue as well.

Thanks,

Ramananth

Hi Pradeep,

Getting the RowCount as 5

Thanks,

Ramananth

Priyanka Chandr
Mega Guru

Hi,

Try this one

runScript();
function runScript() {
var gr = new GlideRecord('sysauto');
gr.addQuery('name','name of your job');
gr.query();
if (gr.next()) {
Packages.com.snc.automation.TriggerSynchronizer.executeNow(gr);
}
}

changed the Gliderecord command to use the table, "scheduled_import_set".
The script is working as desired.

var rec = new GlideRecord('scheduled_import_set');

Mark it correct and helpful.
Thanks,