Name

global.AutoResolutionLanguageHelper

Description

No description available

Script

var AutoResolutionLanguageHelper = Class.create();

  
AutoResolutionLanguageHelper.getOrCreateLanguageConfigGr = function(arConfigSysId, languageCode, capability) {
  var languageConfigGr = AutoResolutionLanguageHelper.getLanguageConfigRecord(arConfigSysId, languageCode, capability);
  if (!gs.nil(languageConfigGr))
  	return languageConfigGr;
  else
  	return AutoResolutionLanguageHelper.createLanguageConfigRecord(arConfigSysId, languageCode, capability);
};
  
AutoResolutionLanguageHelper.getLanguageConfigRecord = function(arConfigSysId, languageCode, capability) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('training_language', languageCode);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.query();
  	
  if (languageConfigGr.next())
  	return languageConfigGr;
  else
  	return '';
};

/**
* Gets the language configuration record given the solution name.
* @param {string} arConfigSysId	The sys_id of the auto resolution configuration.
* @param {string} capability		Capability type (e.g. AgentZero, Workflow, or LanguageX)
* @param {string} solutionName		Name of the solution.
* @return {GlideRecord} The record of the language configuration.
*/
AutoResolutionLanguageHelper.getLanguageConfigRecordBySolutionName = function(arConfigSysId, capability, solutionName) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.addQuery('ml_solution_name', solutionName);
  languageConfigGr.query();
  	
  return languageConfigGr.next() ? languageConfigGr : '';
};

/**
* Gets all the language configuration records given the capability type.
* @param {string} arConfigSysId	The sys_id of the auto resolution configuration.
* @param {string} capability		Capability type (e.g. AgentZero, Workflow, or LanguageX)
* @return {string[]} A list of string names of solutions.
*/
AutoResolutionLanguageHelper.getAllSolutionNamesByCapability = function(arConfigSysId, capability) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.query();
  
  var solutionNameList = [];
  var arrayUtil = new global.ArrayUtil();
  while (languageConfigGr.next()) {
  	// Avoid adding duplicate solution names
  	var solutionName = languageConfigGr.getValue("ml_solution_name");
  	if(arrayUtil.contains(solutionNameList, solutionName)) {
  		continue;
  	}
  	
  	solutionNameList.push(languageConfigGr.getValue("ml_solution_name"));
  }

  return solutionNameList;
};

/**
*
* @param arConfigSysId
* @param languageCode
* @param capability
* @param solutionName
* @returns {GlideRecord}
*/
AutoResolutionLanguageHelper.createLanguageConfigRecord = function(arConfigSysId, languageCode, capability, solutionName) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.newRecord();
  languageConfigGr.setValue(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.setValue('training_language', languageCode);
  languageConfigGr.setValue('capability', capability);
  languageConfigGr.setValue('ml_solution_name', solutionName);
  var languageConfigSysId = languageConfigGr.insert();
  languageConfigGr.get(languageConfigSysId);
  return languageConfigGr;
};
  
AutoResolutionLanguageHelper.isLanguageConfigRecordPresent = function(arConfigSysId) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addNotNullQuery('ml_solution_name');
  languageConfigGr.query();
  	
  return languageConfigGr.next();
};

AutoResolutionLanguageHelper.updateLanguageConfigRecord = function(languageConfigGr, resultObj) {
  Object.keys(resultObj).forEach(function(key) {
  	languageConfigGr.setValue(key, resultObj[key]);
  	languageConfigGr.update();
  });
};

AutoResolutionLanguageHelper.getActiveLanguages = function(arConfigSysId) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addActiveQuery();
  languageConfigGr.query();
  
  var activeLanguageCodes = [];
  while (languageConfigGr.next()) 
  	activeLanguageCodes.push(languageConfigGr.getValue('training_language'));
  
  return activeLanguageCodes;
};

AutoResolutionLanguageHelper.getSupportedLanguages = function(arConfigSysId, capability) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addNotNullQuery('training_language');
  if (gs.nil(capability))
  	capability = new AutoResolutionMLHelper(arConfigSysId).getCapability();
  languageConfigGr.addQuery("capability", capability);
  languageConfigGr.query();
  
  var languageCodes = [];
  while (languageConfigGr.next()) 
  	languageCodes.push(languageConfigGr.getValue('training_language'));
  
  return languageCodes;
};

AutoResolutionLanguageHelper.getLanguageToSolutionMap = function(arConfigSysId) {
  var languageToSolutionMap = {};
  
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addNotNullQuery('training_language');
  languageConfigGr.addNotNullQuery('latest_trained_version');
  languageConfigGr.addActiveQuery();
  languageConfigGr.query();

  while (languageConfigGr.next())
  	languageToSolutionMap[languageConfigGr.getValue('training_language')] = languageConfigGr.getValue('ml_solution_name');
  
  return languageToSolutionMap;
};

AutoResolutionLanguageHelper.getSolutionNameForLanguage = function(languageCode, arConfigSysId, capability) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addActiveQuery();
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('training_language', languageCode);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.query();
  
  if (languageConfigGr.next())
  	return languageConfigGr.getValue('ml_solution_name');
  else
  	return '';
};

AutoResolutionLanguageHelper.checkConfigExistsForLanguageAndSolutionName = function(languageCode, solutionName) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery('training_language', languageCode);
  languageConfigGr.addQuery('ml_solution_name', solutionName);
  languageConfigGr.query();
  return languageConfigGr.next();
};
  
AutoResolutionLanguageHelper.setActiveOnTrainedLanguageConfigs = function(arConfigSysId, capability, active) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.query();

  while(languageConfigGr.next()) {
  	// making sure the trained version is a valid number when setting active to true
  	if ((active && Number(languageConfigGr.getValue('latest_trained_version')) >= 1) || !active) {
  		languageConfigGr.setValue('active', active);
  		languageConfigGr.update();
  	}
  }
};

/**
* Get the solution name and version for the active language configuration record
* @param arConfigSysId
* @param languageCode
*/
AutoResolutionLanguageHelper.getSolutionNameAndVersionForLanguage = function(arConfigSysId, languageCode) {
  var results = {};
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addActiveQuery();
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('training_language', languageCode);
  languageConfigGr.query();

  // we expect only 1 language config record to be active for a language
  if (languageConfigGr.next()) {
  	results.solution_name = languageConfigGr.getValue("ml_solution_name");
  	results.solution_version = languageConfigGr.getValue("latest_trained_version");
  	return results;
  }
  return results;
};

/**
* Gets solution name and version for a given capability and language
* @param arConfigSysId
* @param languageCode
* @param capability
* @returns {*}
*/
AutoResolutionLanguageHelper.getSolutionNameAndVersionForLanguageWithCapability = function(arConfigSysId, languageCode, capability) {
  var result = {};
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery('training_language', languageCode);
  languageConfigGr.addQuery('capability', capability);
  languageConfigGr.query();

  // we expect only 1 language config record to be for a language with capability
  if (languageConfigGr.next()) {
  	result.solution_name = languageConfigGr.getValue("ml_solution_name");
  	result.solution_version = languageConfigGr.getValue("latest_trained_version");
  	return result;
  }
  return result;
};

AutoResolutionLanguageHelper.setVersionNumberForWorkflowSolution = function(arConfigSysId, solutionName, versionNumber) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, arConfigSysId);
  languageConfigGr.addQuery("capability", AutoResolutionConstants.AGENT_ZERO_WORKFLOW_CAPABILITY);
  languageConfigGr.addQuery("ml_solution_name", solutionName)
  languageConfigGr.query();

  if (languageConfigGr.next()) {
  	languageConfigGr.setValue("latest_trained_version", versionNumber);
  	languageConfigGr.setValue("tuned", true);
  	languageConfigGr.setValue("last_tuned", new GlideDateTime());
  	languageConfigGr.update();
  }
};

AutoResolutionLanguageHelper.validConfigExistsForSolutionName = function(solutionName) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery('ml_solution_name', solutionName);
  languageConfigGr.query();
  return languageConfigGr.next();
};

AutoResolutionLanguageHelper.deleteLanguageConfiguration = function(configSysId, capability) {
  var languageConfigGr = new GlideRecord(AutoResolutionConstants.CONFIG_LANGUAGE_TABLE_NAME);
  languageConfigGr.addQuery(AutoResolutionConstants.CONFIGURATION_FIELD_NAME, configSysId);
  languageConfigGr.addQuery("capability", capability);
  languageConfigGr.query();
  if (languageConfigGr.next()) {
  	gs.info("AutoResolutionLanguageHelper: Deleting existing languageX configuration record");
  	languageConfigGr.deleteMultiple();
  }
};

Sys ID

e375c0bd73f62010f14a063f34f6a764

Offical Documentation

Official Docs: