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