Name

sn_chg_ml_sctp.StdChangeMLSNC

Description

No description available

Script

var StdChangeMLSNC = Class.create();

StdChangeMLSNC.LOG_PROPERTY = "com.snc.change_management.ml.sctp.log";

StdChangeMLSNC.prototype = {
  initialize: function() {
  	var propGr = new GlideRecord('chg_ml_prop_sctp');
  	if (propGr.get('c6dc0d64233700101488dc1756bf659a'))
  		this._propertyGr = propGr;

  	this.log = new global.GSLog(StdChangeMLSNC.LOG_PROPERTY, this.type);
  },

  getTemplateValuesFromClusterSummary: function(summaryGr) {
  	var retVal = {};
  	var templateValue = {};

  	var solutionGr = summaryGr.solution.getRefRecord();
  	var inputFields = solutionGr.getValue('prediction_input_fields').split(',');

  	var det = new GlideRecord('ml_cluster_detail');
  	det.addQuery('cluster_id.cluster_id', summaryGr.getValue('cluster_id'));
  	det.addQuery('solution', solutionGr.getUniqueValue());
  	det.orderBy('rank');
  	det.setLimit(11);
  	det.query();

  	var firstRecord = true;
  	var sample_sysid = [];
  	var chgGr = new GlideRecord('change_request');
  	while (det.next()) {
  		if (firstRecord) {
  			firstRecord = false;
  			retVal.change_id = det.getValue('rec_sys_id');
  			var firstChgGr = new GlideRecord('change_request');
  			if (firstChgGr.get(det.getValue('rec_sys_id'))) {
  				retVal.short_description = firstChgGr.getValue('short_description');
  				for (var i=0; i < inputFields.length; i++)
  					chgGr.addQuery(inputFields[i], firstChgGr.getValue(inputFields[i]));
  			}
  		}
  		else
  			sample_sysid.push(det.getValue('rec_sys_id'));

  	}
  	retVal.sample_changes = sample_sysid;
  	retVal.templateData = chgGr.getEncodedQuery();

  	if (this.log.atLevel(global.GSLog.DEBUG))
  		this.log.debug("[getTemplateValuesFromCluster] ID: " + summaryGr.getUniqueValue() + " Values: " + JSON.stringify(retVal));

  	return retVal;
  },

  getClusterCandidates: function() {
  	if (!this._propertyGr)
  		return;

  	var clusterDefinition = new sn_chg_ml.ChangeMLProperties(this._propertyGr).getSolutionDefinition();
  	if (clusterDefinition) {
  		var solutionGr = new GlideRecord('ml_solution');
  		solutionGr.addQuery('ml_capability_definition', clusterDefinition.getUniqueValue());
  		solutionGr.addActiveQuery();
  		solutionGr.query();

  		if (solutionGr.next())
  			this.getClusterTemplatesForSolutionId(solutionGr.getUniqueValue());
  	}
  },

  getClusterTemplatesForSolutionId: function(solutionId) {
  	var summaryGr = new GlideRecord('ml_cluster_summary');
  	summaryGr.addQuery('solution', solutionId);
  	summaryGr.addNotNullQuery('cluster_concept');

  	var targetPercentage = this._propertyGr.getValue('quality');
  	if (targetPercentage !== '')
  		summaryGr.addQuery('cluster_quality', '>', targetPercentage);
  	summaryGr.query();

  	if (this.log.atLevel(global.GSLog.DEBUG))
  		this.log.debug("[getClusterTemplatesForSolutionId] ID: " + solutionId + " Percentage: " + targetPercentage + " Returned Rows: " + summaryGr.getRowCount());

  	while (summaryGr.next()) {
  		var clusterData = this.getTemplateValuesFromClusterSummary(summaryGr);

  		if (clusterData.hasOwnProperty('change_id')) {
  			var newGr = new GlideRecord('std_change_template_candidate');
  			if (!newGr.get('cluster_concept', summaryGr.getValue('cluster_concept'))) {
  				newGr.newRecord();
  				newGr.setValue('cluster_concept', summaryGr.getValue('cluster_concept'));
  				newGr.setValue('change_requests', clusterData.sample_changes);
  				newGr.setValue('short_description', clusterData.short_description);
  				newGr.setValue('template_value', clusterData.templateData);
  				var candidateId = newGr.insert();

  				if (this.log.atLevel(global.GSLog.DEBUG))
  					this.log.debug("[getClusterTemplatesForSolutionId] Created candidate ID: " + candidateId);
  			}
  		}
  	}
  },

  createStdChgProposal: function(inputGr) {
  	if (!inputGr)
  		return;

  	var utils = new global.StdChangeUtils();
  	var proposalGr = new GlideRecord(utils.TABLE_NAME_PROPOSAL);

  	proposalGr.newRecord();
  	proposalGr.setValue('template_value', inputGr.getValue('template_value'));
  	proposalGr.setValue('change_requests', inputGr.getValue('sample_change_request'));
  	proposalGr.setValue('short_description', inputGr.getValue('short_description'));
  	var proposalId = proposalGr.insert();

  	if (this.log.atLevel(global.GSLog.DEBUG))
  		this.log.debug("[createStdChgProposal] ID: " + inputGr.getUniqueValue() + " proposalID: " + proposalId);

  	inputGr.setValue('active', false);
  	inputGr.setValue('proposal', proposalId);
  	inputGr.update();

  	return proposalGr;
  },

  type: 'StdChangeMLSNC'
};

Sys ID

17bcd261dbefc010ae3789584b9619a5

Offical Documentation

Official Docs: