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

Offical Documentation

Official Docs: