Name

sn_data_discovery.DiscoveryJobUtil

Description

This api can be used to validate for data discovey jobs.

Script

var DiscoveryJobUtil = Class.create();
DiscoveryJobUtil.prototype = {

  /*
   * Method validates if a jub with the same name already exsts 
   * @param jobName
   */
  jobIsPresent: function(jobName) {
      var jobRecord = new GlideRecord("sn_data_discovery_job_history");
      jobRecord.addQuery("name", jobName);
      jobRecord.query();
      return jobRecord.next();
  },

  /*
   * Method validates if job is active
   * @param jobName
   */
  jobInActiveState: function(jobName) {
      var jobRecord = new GlideRecord("sn_data_discovery_job_history");
      jobRecord.addQuery("state", "IN", "working,quiescent,pausing,paused,cancelling");
      jobRecord.addQuery("name", jobName);
      jobRecord.query();
      return jobRecord.next();
  },

  /*
   * Populate dp_primary_reference entries for a privacyConfig and dataClass
   * @sysparm privacyConfigId dp_configuration sys_id
   * @sysparm dataClassid data_classification sys_id
   */
  activeJobIsPresent: function() {
      var jobRecord = new GlideRecord("sn_data_discovery_job_history");
      jobRecord.addQuery("state", "IN", "working,quiescent,pausing,paused,cancelling");
      jobRecord.query();
      return jobRecord.next();
  },

  isActivePatternPresent: function() {
      var jobRecord = new GlideRecord("sn_data_discovery_active_data_pattern");
      jobRecord.query();
      return jobRecord.next();
  },

  isTargetTablePresent: function() {
      var jobRecord = new GlideRecord("sn_data_discovery_target_table");
      jobRecord.query();
      return jobRecord.next();
  },

  isJobCancelled: function(jobName) {
      var jobRecord = new GlideRecord("sn_data_discovery_job_history");
      jobRecord.addQuery("state", "IN", "cancelled,cancelling");
      jobRecord.addQuery("name", jobName);
      jobRecord.query();
      return jobRecord.next();
  },

  isAnyJobActive: function() {
      var jobRecord = new GlideRecord("sn_data_discovery_job_history");
      jobRecord.addQuery("state", "IN", "working,quiescent,pausing,paused");
      jobRecord.query();
      return jobRecord.next();
  },

  validateJob: function(jobName) {
      if (isActivePatternPresent() && isTargetTablePresent() && !isJobCancelled(jobName) && !isAnyJobActive()) {
          return true;
      } else {
          gs.info("Unable to schedule the job");
      }
  },

  /*
  * Verifies if dataPattern is active.
  */
  isPatternActive: function(dataPattern) {
  	var jobRecord = new GlideRecord("sn_data_discovery_active_data_pattern");
  	jobRecord.addQuery("data_pattern", dataPattern);
  	jobRecord.query();
  	var next = jobRecord.next();
  	return next;
  },

  /** 
   * Verifies if dataPattern was used at least once.
   */
  isPatternUsed: function(dataPattern) {
  	var jobRecord = new GlideRecord("sn_data_discovery_finding");
  	jobRecord.addQuery("data_pattern", dataPattern);
  	jobRecord.query();
  	return jobRecord.next();
  },

  type: 'DiscoveryJobUtil'
};

Sys ID

4a7ad9fe539ce110ca4eddeeff7b1232

Offical Documentation

Official Docs: