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

Offical Documentation

Official Docs: