Name
global.MatchingRuleForAssignment
Description
Utility to configure AssignmentWorkbench
Script
var MatchingRuleForAssignment = Class.create();
var CONFIG_TABLE = "matching_rule";
var MATCHING_DIMENSION_FOR_ASSIGNMENT_TABLE = "matching_dimension_for_assignment";
var WORKBENCH_NAME = "assignment_workbench";
var BASE_CONFIG_SYS_ID = "da1727e0d723020058c92cf65e6103bf";
var MATCHING_DIMENSION = "matching_dimension";
var CONFIG_ERROR_MESSAGE_NOT_FOUND = gs.getMessage("Configuration for Assignment Workbench is not found");
MatchingRuleForAssignment.getConfiguration = function () {
var grUserConfig = new GlideRecordSecure(CONFIG_TABLE);
var currentUserId = gs.getUserID();
grUserConfig.addQuery("user", currentUserId);
grUserConfig.query();
if (grUserConfig.next()) {
return grUserConfig;
} else {
config.preferenceId = null;
return null;
}
};
MatchingRuleForAssignment.getConfigData = function(taskData){
var awConfig = {};
awConfig.configData = [];
var currentUserId = gs.getUserID();
if(taskData && taskData.tableName && taskData.taskId){
var taskRec = new GlideRecordSecure(taskData.tableName);
taskRec.get(taskData.taskId);
var grconfig = new GlideRecord(CONFIG_TABLE);
//grconfig.addQuery('user',currentUserId);
grconfig.addActiveQuery();
grconfig.addQuery('matching_options', 'recommendation criteria');
grconfig.addQuery('table',taskData.tableName);
grconfig.query();
var match = false;
while(grconfig.next()){
if(JSUtil.nil(grconfig.getValue('condition')))
match = true;
else{
var filter = new GlideFilter(grconfig.getValue('condition'), "rule-condition");
filter.setCaseSensitive(true);
match = filter.match(taskRec, true);
}
if(match){
var cdata = {};
cdata["tableName"]= grconfig.getDisplayValue("table");
cdata["tableSysId"] = grconfig.getValue("table");
var dimensionforAssignmentConfig = {};
var grDim = new GlideRecordSecure(MATCHING_DIMENSION_FOR_ASSIGNMENT_TABLE);
grDim.addQuery("matching_rule",grconfig.getValue('sys_id'));
//grDim.addQuery("user",currentUserId);
grDim.orderBy('order');
grDim.query();
while(grDim.next()){
var singleDimensionData = {};
singleDimensionData["dimensionId"] = grDim.getValue("dimension");
var dimensionDisplayValue = JSUtil.nil(grDim.getDisplayValue("dimension.display_name")) ? grDim.getDisplayValue("dimension") : grDim.getDisplayValue("dimension.display_name");
singleDimensionData["dimensionName"] = dimensionDisplayValue;
singleDimensionData["dimensionOrder"] = grDim.getDisplayValue("order");
singleDimensionData["dimensionSelected"] = grDim.getValue("selected");
singleDimensionData["dimensionWeight"] = grDim.getDisplayValue("weight");
singleDimensionData["dimensionOrder"] = grDim.getValue("order");
singleDimensionData["dimensionUse"] = grDim.getValue("dimension_type");
singleDimensionData["dimensionRef"] = {};
var dimRecord = new GlideRecord("matching_dimension");
dimRecord.addQuery("sys_id",grDim.getValue("dimension"));
dimRecord.query();
if(dimRecord.next()){
if(dimRecord.getValue("use_reference")== true){
var dimensionRefObj = {};
dimensionRefObj["tableName"] = dimRecord.getValue("reference_table");
dimensionRefObj["fieldName"] = dimRecord.getValue("reference_field");
dimensionRefObj["filterCond"] = dimRecord.getValue("reference_filter");
dimensionRefObj["filterLabel"] = dimRecord.getDisplayValue("reference_label");
singleDimensionData["dimensionRef"] = dimensionRefObj;
}
}
dimensionforAssignmentConfig[grDim.getValue("dimension")] = singleDimensionData;
}
var groupFilterData = {};
groupFilterData['table'] = "sys_user_group";
groupFilterData['encodedQuery'] = "";
groupFilterData['readonly'] = false;
groupFilterData['searchField'] = 'name';
groupFilterData['attributes'] = '';
awConfig.configData.push({"conData":cdata,
"dimData":dimensionforAssignmentConfig,
"sysID":grconfig.getValue('sys_id'),
"noofAgents":GlideProperties.get("assignment_workbench_no_of_agents",20),
"groupFilterData":groupFilterData});
awConfig.result = "success";
break;
}
}
if(!match){
awConfig.result = "failure";
awConfig.msg = CONFIG_ERROR_MESSAGE_NOT_FOUND;
}
}else{
awConfig.result = "failure";
awConfig.msg = CONFIG_ERROR_MESSAGE_NOT_FOUND;
}
return awConfig;
},
MatchingRuleForAssignment.createNewConfiguration = function(current) {
var currentBaseRecord = new GlideRecordSecure(CONFIG_TABLE);
currentBaseRecord.get(BASE_CONFIG_SYS_ID);
for ( var prop in currentBaseRecord) {
if (prop != "sys_id" && prop != "sys_class_name") {
current.setValue(prop, currentBaseRecord.getValue(prop));
if(new CSMUtil().isDebugOn())
gs.log("prop=" + prop + " value=" + currentBaseRecord.getValue(prop));
}
}
};
MatchingRuleForAssignment.getMatchingDimensions = function(){
var gr = new GlideRecordSecure(MATCHING_DIMENSION);
gr.query();
while (gr.next()) {
answer.add(gr.getValue("name"), gr.getDisplayValue("name"));
}
};
Sys ID
0036d3d8d732120058c92cf65e61038c