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