Name
sn_nb_action.ConditionBasedRuleHandler
Description
Implements extension point sn_nb_action.RuleTypeFactory Factory to register a handler to evaluate Condition Based Recommended Action Rule.
Script
var ConditionBasedRuleHandler = Class.create();
ConditionBasedRuleHandler.prototype = Object.extendsObject(sn_nb_action.RuleTypeHandlerBase, {
initialize: function() {},
/*
* This identifies the rule type handled by this implementation.
* Should be name of a table that extends "sn_nb_action_rule_base" table.
*/
getId: function() {
return sn_nb_action.Constants.TBL_CONDITION_BASED_RULE;
},
/*
* Return an array of GlideRecord actions recommended by this rule
*/
evaluateRule: function(currentRecord, ruleRecord, recommendationType) {
var recommendedActionsArr = [];
var hasActions = false;
var _log = new global.GSLog(sn_nb_action.Constants.PROP_LOG_LEVEL, this.type);
var condition = ruleRecord.getValue(sn_nb_action.Constants.COL_CONDITION);
if (!gs.nil(condition)) {
var name = ruleRecord.getValue(sn_nb_action.Constants.COL_NAME);
var filter = new GlideFilter(condition, name);
filter.setCaseSensitive(false);
if (filter.match(currentRecord, true)) {
var recommendedActionEvaluator = new sn_nb_action.RecommendedActionEvaluator();
var recommendedActionsGr = recommendedActionEvaluator.prepQuery(ruleRecord, recommendationType);
recommendedActionsGr.query();
while (recommendedActionsGr.next()) {
try {
var currentRecommendedActionsArr = recommendedActionEvaluator.evaluateRecommendedAction(recommendedActionsGr, currentRecord);
if (currentRecommendedActionsArr && currentRecommendedActionsArr.length > 0) {
hasActions = true;
recommendedActionsArr.push.apply(recommendedActionsArr, currentRecommendedActionsArr);
}
} catch (ex) {
_log.error("Failed to evaluate Recommended Action " + recommendedActionsGr.getUniqueValue() + " for context " + currentRecord.getUniqueValue());
}
}
}
}
if (hasActions)
return recommendedActionsArr;
return false;
},
/*
* Returns true if the rule is valid
*/
isValidRule: function(ruleRecord) {
return true;
},
type: 'ConditionBasedRuleHandler'
});
Sys ID
af7dc0a3eb6220106fd0b6302a522882