Name
sn_hr_core.HRMLUtilsSNC
Description
No description available
Script
function HRMLUtilsSNC() {}
HRMLUtilsSNC.prototype = {
initialize: function() {},
getPredictions: function(glideRecord, solutionDefinition, topN) {
if (gs.nil(topN))
topN = 1;
if (!(new GlidePluginManager().isActive('com.glide.platform_ml')))
return;
try {
var mlSolution = sn_ml.ClassificationSolutionStore.get(solutionDefinition.solution_name.toString());
var options = {};
options.top_n = topN;
options.mluc = "MLUC-HR-00002";
options.apply_threshold = true;
mlSolution.getActiveVersion().predict(glideRecord, options);
} catch (err) {
var logError = function(err) {
gs.error(err);
};
gs.getMessage('Error while predicting: {0}', err.toString(), logError);
}
},
getHRPredictions: function(hrCaseGr) {
var hrService = this.predict(hrCaseGr);
if (gs.nil(hrService))
return;
var gr = new GlideRecord('sn_hr_core_service');
if (gr.get(hrService)) {
if (gr.getValue('active') == 1) {
var coe_display = gr.getValue('service_table');
var service = gr.getValue('name');
var service_id = gr.getUniqueValue();
var predictions = {
coe_display: coe_display,
service_display: service,
service_id: service_id
};
return predictions;
}
}
gr = new GlideRecord('sn_hr_core_service');
gr.addQuery('value', 'general_inquiry');
gr.query();
if (gr.next()) {
var coe_display_error = gr.getDisplayValue('service_table');
var service_error = gr.getDisplayValue('name');
var service_id_error = gr.getUniqueValue();
var predictions_error = {
coe_display: coe_display_error,
service_display: service_error,
service_id: service_id_error
};
return predictions_error;
}
return;
},
predict: function(hrCaseGr) {
if (!(new GlidePluginManager().isActive('com.glide.platform_ml')))
return;
var gr = new GlideRecord('sn_hr_core_ai_configuration'); //configuration table
gr.addQuery('use_case', 'email_categorization');
gr.addQuery('sys_domain', hrCaseGr.sys_domain);
gr.addActiveQuery();
gr.query();
if (!gr.next()) {
gr = new GlideRecord('sn_hr_core_ai_configuration');
gr.addQuery('use_case', 'email_categorization');
gr.addQuery('sys_domain', 'global');
gr.addActiveQuery();
gr.query();
if (!gr.next())
return;
}
var name = gr.solution_capability_definition.solution_name.toString(); //Get solution name from configuration
if (this._isMLPredictorResultPresent(name, hrCaseGr.sys_id))
return;
try {
var mlSolution = sn_ml.ClassificationSolutionStore.get(name);
if (gs.nil(mlSolution))
return;
var options = {};
options.mluc = "MLUC-HR-00004";
options.top_n = 1;
options.apply_threshold = true;
var result = mlSolution.getActiveVersion().predict(hrCaseGr, options);
if (result === null) {
//instead of returning null returning empty array
return [];
}
var resultObj = JSON.parse(result);
var keys = Object.keys(resultObj);
if (gs.nil(keys)||resultObj[keys[0]].length===0) {
return;
}
var hrServiceSysId = resultObj[keys[0]][0]["predictedSysId"];
return hrServiceSysId;
} catch (err) {
var logError = function(err) {
gs.error(err);
};
gs.getMessage('Error while predicting: {0}', err.toString(), logError);
}
},
_isMLPredictorResultPresent: function(solutionName, caseID) {
// fetch the solution from solution id
var sol = new GlideRecord('ml_solution');
sol.addQuery('active', true);
sol.addQuery('solution_name', solutionName);
sol.query();
if (!sol.next())
return false;
// Check if predicted result is persent
var predictorResult = new GlideRecord('ml_predictor_results');
predictorResult.addQuery('source_sys_id', caseID);
predictorResult.addQuery('solution', sol.sys_id);
predictorResult.query();
if (predictorResult.next())
return true;
return false;
},
type: 'HRMLUtilsSNC'
};
Sys ID
45104154536300105354ddeeff7b1252