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

Offical Documentation

Official Docs: