Name

sn_rf.RFConditionalRulesEvaluator

Description

Evaluation script for Conditional Rules Evalution type

Script

var RFConditionalRulesEvaluator = Class.create();
RFConditionalRulesEvaluator.prototype = Object.extendsObject(sn_rf.RFEvaluatorSNC, {
  category: 'rf_evaluation_script', // DO NOT REMOVE THIS LINE!

  getEvaluationOutputSchema: function(param) {
      var defSysIds = param.inputs.conditional_definitions;
      var schemaObjectList = [];
      var addedKeys = [];

      defSysIds = defSysIds ? defSysIds.split(',') : [];
      var conditionalDefinitions = RFConditionalDefinitionService.getBySysIds(defSysIds);
      if (conditionalDefinitions.length == 0) {
          var errorDetails = new RFExceptionManager('INVALID_CONDITIONAL_DEFINITION');
          var errorMessage = errorDetails.getMessage();
          new RFLogger('RFConditionalRulesEvaluator - getEvaluationOutputSchema').logError(errorMessage);
          return {
              'status': RFConstants.ERROR,
              'errorCode': errorDetails.getCode(),
              'errorMessage': errorMessage
          };
      }

      for (var i = 0; i < conditionalDefinitions.length; i++) {
          var keys = Object.keys(conditionalDefinitions[i].getRecommendation());
          for (var j = 0; j < keys.length; j++) {
              if (addedKeys.indexOf(keys[j]) == -1) {
                  addedKeys.push(keys[j]);
                  RFUtils.addToSchema(schemaObjectList, keys[j], keys[j], RFConstants.evaluationOutputTypes.STRING);
              }
          }
      }

      return {
          'status': RFConstants.SUCCESS,
          'schema': schemaObjectList,
          'metaData': {
              'uniqueKey': addedKeys
          }
      };
  },

  getEvaluationOutputs: function(param) {
      var rfLogger = new RFLogger('RFConditionalRulesEvaluator - getEvaluationOutputs');
      var defSysIds = param.inputs.conditional_definitions;
      var evaluationOutputs = [];

      defSysIds = defSysIds ? defSysIds.split(',') : [];
      var conditionalDefinitions = RFConditionalDefinitionService.getBySysIds(defSysIds);
      if (conditionalDefinitions.length == 0) {
          var errorDetails = new RFExceptionManager('INVALID_CONDITIONAL_DEFINITION');
          var errorMessage = errorDetails.getMessage();
          rfLogger.logError(errorMessage);
          return {
              'status': RFConstants.ERROR,
              'errorCode': errorDetails.getCode(),
              'errorMessage': errorMessage
          };
      }

      for (var i = 0; i < conditionalDefinitions.length; i++) {
          if (conditionalDefinitions[i].getTable() == param.contextRecord.getTableName()) {
              if (conditionalDefinitions[i].evaluateInputCondition(param.contextRecord)) {
                  var recommendation = conditionalDefinitions[i].getRecommendation();
                  if (Object.keys(recommendation).length != 0) {
                      evaluationOutputs.push(conditionalDefinitions[i].getRecommendation());
                  }
              }
          } else {
              var configErrorDetails = new RFExceptionManager('INVALID_CONDITIONAL_DEFINITION_CONFIG', [conditionalDefinitions[i].getTable()]);
              var configErrorMesssage = configErrorDetails.getMessage();
              rfLogger.logError(configErrorMesssage);
              return {
                  'status': RFConstants.ERROR,
                  'errorCode': configErrorDetails.getCode(),
                  'errorMessage': configErrorMesssage
              };
          }
      }

      return {
          'status': RFConstants.SUCCESS,
          'evaluationOutputs': evaluationOutputs
      };
  },

  type: 'RFConditionalRulesEvaluator'
});

Sys ID

6d23d3e453433010e530ddeeff7b12c7

Offical Documentation

Official Docs: