Name
global.DMScheduler
Description
Schedule Data Managment Delete/update operations
Script
var DMScheduler = Class.create();
DMScheduler.prototype = Object.extendsObject(AbstractAjaxProcessor, {
scheduleDM: function() {
var dm_table = this.getParameter('sysparm_dm_table');
var number = this.getParameter('sysparm_number');
var table = this.getParameter('sysparm_table');
var condition = this.getParameter('sysparm_condition');
condition = new GlideStringUtil().unEscapeHTML(condition);
var setWorkflow = this.getParameter('sysparm_set_workflow');
var runAt = this.getParameter('sysparm_run_at');
var sysId = this.getParameter('sysparm_sys_id');
var setSystemFields = this.getParameter('sysparm_set_system_fields');
var updateFieldValue = this.getParameter('sysparm_set_value');
this.schedule(dm_table, number, sysId, table, condition, setWorkflow, setSystemFields, updateFieldValue, runAt);
return '';
},
schedule: function(dm_table, number, sysId, table, condition, setWorkflow, setSystemFields, updateFieldValue, runAt) {
var jobName;
var script = "var gr = new GlideRecord('" + dm_table + "');" +
" gr.addQuery('sys_id', '" + sysId + "');" +
" gr.query();" +
" if (gr.next())" +
" { var dmAPI = new SNC.DataManagementAPI(); ";
if (dm_table == 'sys_dm_delete') {
jobName = "Delete Job: " + number;
script += " dmAPI.executeDelete(gr);}";
} else if (dm_table == 'sys_dm_update') {
jobName = "Update Job: " + number;
script += " dmAPI.executeUpdate(gr);}";
} else {
//unknown table
return '';
}
//set run_at time
var runDt = new GlideDateTime();
if (!gs.nil(runAt))
runDt.setDisplayValue(runAt);
var gr = new GlideRecord(dm_table);
if (gr.get(sysId)) {
gr.setValue('table', table);
gr.setValue('condition', condition);
gr.setValue('set_workflow', setWorkflow);
gr.setValue('state', 'scheduled');
gr.setValue('run_at', runDt);
if (dm_table == 'sys_dm_update') {
gr.setValue('set_system_fields', setSystemFields);
updateFieldValue = new GlideStringUtil().unEscapeHTML(updateFieldValue);
gr.setValue('set_value', updateFieldValue);
}
var trig = new GlideRecord("sys_trigger");
if (gr.schedule.nil()) {
// Schedule Job for for future run at date
trig.initialize();
trig.setValue("state", 0); // ready
trig.setValue("trigger_type", 0); // run once
trig.setValue("next_action", runDt);
trig.setValue("name", jobName);
trig.setValue("script", script);
var jobSysId = trig.insert();
gr.setValue('schedule', jobSysId);
gr.update();
} else {
if (trig.get(gr.schedule)) {
trig.setValue("next_action", runDt);
trig.setValue("state", 0);
trig.update();
}
gr.update();
}
}
return '';
},
type: 'DMScheduler'
});
Sys ID
99ea9a24eb0201100dba9147c152281b