Name
sn_chg_ml.ChangeMLProperties
Description
Object used to provide Change ML Configuration property utilities.
Script
var ChangeMLProperties = Class.create();
ChangeMLProperties.prototype = {
CHG_ML_PROP_SOLUTION: "chg_ml_prop_solution",
initialize: function(_gr, _gs) {
this._gr = _gr || current;
this._gs = _gs || gs;
},
/**
* Returns an object containing the the training state of the related Solution Definitions
*/
getSolutionTrainingState: function(solutionTableName) {
if (!solutionTableName)
solutionTableName = this.CHG_ML_PROP_SOLUTION;
var solutionGr = new GlideRecord(solutionTableName);
solutionGr.addQuery("chg_ml_prop", this._gr.getUniqueValue());
solutionGr.query();
var solDefIds = [];
while (solutionGr.next())
solDefIds.push(solutionGr.ml_capability_definition_base + "");
var solDefGr = new GlideRecord("ml_capability_definition_base");
solDefGr.addQuery("sys_id","IN", solDefIds.join(","));
solDefGr.query();
var trainingInfo = {};
while (solDefGr.next()) {
var solDefSysId = solDefGr.getUniqueValue();
trainingInfo[solDefSysId] = {
"display_value": solDefGr.getDisplayValue(),
"sys_id": solDefSysId,
"language": solDefGr.getDisplayValue("dataset_language"),
"trained": false
};
}
var mlSolutionGr = new GlideRecord("ml_solution");
mlSolutionGr.addQuery("ml_capability_definition", "IN", solDefIds.join(","));
mlSolutionGr.addQuery("state", "solution_complete");
mlSolutionGr.addActiveQuery();
mlSolutionGr.query();
while (mlSolutionGr.next())
trainingInfo[mlSolutionGr.ml_capability_definition + ""].trained = true;
return trainingInfo;
},
/**
* Returns the appropriate solution record for the users language or a default
* solutionTableName: The name of the table to query. Only needed if your feature has multiple
* solution defintion types and configurations. Defaults chg_ml_prop_solution.
*/
getSolution: function(solutionTableName) {
if (!solutionTableName)
solutionTableName = this.CHG_ML_PROP_SOLUTION;
if (this._solution && this._solution.chg_ml_prop + "" === this._gr.getUniqueValue() && this._solution.getTableName() === solutionTableName)
return this._solution;
var sessionLang = this._gs.getSession().getLanguage();
var solutionGr = new GlideRecord(solutionTableName);
if (!solutionGr.isValid())
return null;
solutionGr.addQuery("chg_ml_prop", this._gr.getUniqueValue());
solutionGr.addQuery("ml_capability_definition_base.dataset_language", sessionLang);
solutionGr.query();
// Lookup the default
if (solutionGr.getRowCount() === 0) {
solutionGr = new GlideRecord(solutionTableName);
solutionGr.addQuery("chg_ml_prop", this._gr.getUniqueValue());
solutionGr.addQuery("default_solution", true);
solutionGr.query();
}
if (solutionGr.getRowCount() === 0)
return null;
solutionGr.next();
this._solution = solutionGr;
return solutionGr;
},
/**
* Returns the Solution Definiiton related to the relevant solution record for the users language.
* solutionTableName: The name of the table to query. Only needed if your feature has multiple
* solution defintion types and configurations. Defaults chg_ml_prop_solution.
*/
getSolutionDefinition: function(solutionTableName) {
var solution = this.getSolution(solutionTableName);
if (solution)
return solution.ml_capability_definition_base.getRefRecord();
return null;
},
/**
* Gets the similarity boosters for the properties/language/solution definition.
* solutionTableName: The name of the table to query. Only needed if your feature has multiple
* solution defintion types and configurations. Defaults chg_ml_prop_solution.
*/
getSimilarityBoosters: function(solutionTableName) {
var solutionDefinition = this.getSolutionDefinition(solutionTableName);
var similarityBoosters = new GlideRecord("chg_ml_similarity_boosters");
similarityBoosters.addQuery("chg_ml_prop", this._gr.getUniqueValue());
similarityBoosters.addQuery("ml_capability_definition_similarity", solutionDefinition.getUniqueValue());
similarityBoosters.query();
return similarityBoosters;
},
type: 'ChangeMLProperties'
};
Sys ID
6c8d17675340101034d1ddeeff7b12af