Name
sn_nb_action.NBAActionInputPillParser
Description
No description available
Script
var NBAActionInputPillParser = Class.create();
NBAActionInputPillParser.prototype = {
initialize: function() {
this.CONTEXT_EXPR_START = "{{vp_context";
this.FLOW_OUTPUT_EXPR_START = "{{vp_flow_outputs";
this.EXPR_END = "}}";
},
parseActionInputsPill: function(actionInputsGlideVar,flowOutputsObj,contextGr) {
var actionInputValues = {};
for(var actionInputName in actionInputsGlideVar){
if (actionInputName != "sys_meta" && actionInputName != "sys_id") {
var parameterizedInputValue = actionInputsGlideVar[actionInputName].getDisplayValue();
var parsedInputValue = this.getParsedInputValue(parameterizedInputValue,flowOutputsObj,contextGr);
//The following check is satisfied when the glidevar values are static
if(parsedInputValue === parameterizedInputValue){
if(!gs.nil(actionInputsGlideVar[actionInputName].sys_id))
parsedInputValue = actionInputsGlideVar[actionInputName].getRefRecord();
else
parsedInputValue = actionInputsGlideVar[actionInputName];
}
actionInputValues[actionInputName] = parsedInputValue;
}
}
return actionInputValues;
},
getParsedInputValue: function(parameterizedInputValue,flowOutputsObj,contextGr){
var parsedInputValue = parameterizedInputValue;
var pattern = /(\{{[a-z0-9_.-?]*}})/gi;
var results = parameterizedInputValue.match(pattern);
var returnValue;
if(!gs.nil(results)){
for(var i = 0;i<results.length;i++){
var result = results[i];
if(result.indexOf(this.CONTEXT_EXPR_START) != -1)
returnValue = this.getParsedInputFromContext(result,contextGr,parsedInputValue);
else if(result.indexOf(this.FLOW_OUTPUT_EXPR_START) != -1)
returnValue = this.getParsedInputFromFlowOutputs(result,flowOutputsObj,parsedInputValue);
parsedInputValue = this.getFinalParsedInputValue(result,returnValue,parsedInputValue,parameterizedInputValue);
}
}
return parsedInputValue;
},
getFinalParsedInputValue:function(result,returnValue,parsedInputValue,parameterizedInputValue){
if(result.length < parameterizedInputValue.length){
if(sn_nb_action.NextBestActionUtil.isValidRecord(returnValue) && !gs.nil(returnValue.getTableName())){
return parsedInputValue.replace(result,returnValue.getDisplayValue());
}
else{
return parsedInputValue.replace(result,returnValue);
}
}
return returnValue;
},
getParsedInputFromContext: function(pillExpr,contextGr,parsedInputValue){
if(pillExpr.length == this.CONTEXT_EXPR_START.length + this.EXPR_END.length){
return contextGr;
}
else{
var pillvariable = pillExpr.substring(this.CONTEXT_EXPR_START.length + 1, pillExpr.lastIndexOf(this.EXPR_END));
var replaceValue = this.getReplaceValueFromGr(contextGr,pillvariable);
var parsedInput = gs.nil(replaceValue)? Constants.STRING_WHITESPACE : replaceValue;
return parsedInput;
}
},
getParsedInputFromFlowOutputs: function(pillExpr,flowOutputsObj,parsedInputValue){
var pillvariable = pillExpr.substring(this.FLOW_OUTPUT_EXPR_START.length + 1, pillExpr.lastIndexOf(this.EXPR_END));
var variables = pillvariable.split(".");
if(variables.length > 1){
if(flowOutputsObj[variables[0]] != '' && !gs.nil(flowOutputsObj[variables[0]].isValidRecord())){
var lookupStr = pillvariable.substring(variables[0].length + 1);
var replaceValue = this.getReplaceValueFromGr(flowOutputsObj[variables[0]],lookupStr);
var parsedInput = gs.nil(replaceValue)? Constants.STRING_WHITESPACE : replaceValue;
return parsedInput;
}
else if(flowOutputsObj[variables[0]] == '')
return Constants.STRING_WHITESPACE;
}else if((flowOutputsObj[pillvariable] instanceof GlideRecord) && flowOutputsObj[pillvariable].hasNext()){
var outputList = [];
while(flowOutputsObj[pillvariable].next()){
var gr = new GlideRecord(flowOutputsObj[pillvariable].getTableName());
gr.get(flowOutputsObj[pillvariable].sys_id);
outputList.push(gr);
}
return outputList;
}else if(flowOutputsObj[pillvariable] == '')
return Constants.STRING_WHITESPACE;
else
return flowOutputsObj[pillvariable];
},
//For resolving the reference fields
getReplaceValueFromGr: function(gr,lookupStr){
var replaceValue = gr.getElement(lookupStr).getRefRecord();
if(gs.nil(replaceValue)){
replaceValue = gr.getDisplayValue(lookupStr);
return replaceValue;
}
else if(replaceValue.isValidRecord()){
return replaceValue;
}
return null;
},
//Parser logic for Flow inputs in Input generator table
parseFlowInputsPill: function(flowInputsGlideVar,contextGr) {
var flowInputValues = {};
for(var flowInputName in flowInputsGlideVar){
if (flowInputName != "sys_meta" && flowInputName != "sys_id") {
var parameterizedInputValue = flowInputsGlideVar[flowInputName].getDisplayValue();
var parsedInputValue = this.getParsedInputValue(parameterizedInputValue,{},contextGr);
//The following check is satisfied when the glidevar values are static
if(parsedInputValue === parameterizedInputValue){
if(!gs.nil(flowInputsGlideVar[flowInputName].sys_id))
parsedInputValue = flowInputsGlideVar[flowInputName].getRefRecord();
else
parsedInputValue = flowInputsGlideVar[flowInputName];
}
flowInputValues[flowInputName] = parsedInputValue;
}
}
return flowInputValues;
},
type: 'NBAActionInputPillParser'
};
Sys ID
7e7c3da453222010df5dddeeff7b12a2