- Performance improvement of the RuleEngine

-fix some spelling errors in the log texts
This commit is contained in:
Joe
2019-01-14 08:04:41 -06:00
parent ea1884f819
commit febcdcb105

View File

@@ -18,28 +18,28 @@ const logger = winston.createLogger({
exports.RuleEngine = class RuleEngine { exports.RuleEngine = class RuleEngine {
constructor(ruleSetFiles) { constructor(ruleSetFiles) {
logger.log("info", "Instanciated RulesEngine - RuleSetFiles: " + ruleSetFiles); logger.log("info", "Instantiated RulesEngine - RuleSetFiles: " + ruleSetFiles);
this.ruleSet = {}; this.ruleSet = {};
if (ruleSetFiles === "*") { if (ruleSetFiles === "*") {
fs.readdirSync("./rules/").forEach(file => { fs.readdirSync("./rules/").forEach(file => {
if (this.reTest("/.*\.rule\.json$/", file)) { if (this.reTest("/.*\.rule\.json$/", file)) {
logger.log("info", "Loading ruleset file " + file); logger.log("info", "Loading rule set file " + file);
let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file, 'utf8')); let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file, 'utf8'));
logger.log("info", "Adding ruleset " + Object.keys(newRuleSet)[0]); logger.log("info", "Adding rule set " + Object.keys(newRuleSet)[0]);
this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]] this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]]
} }
}); });
} else if (ruleSetFiles.indexOf(",") > 1) { } else if (ruleSetFiles.indexOf(",") > 1) {
ruleSetFiles.split(",").forEach(file => { ruleSetFiles.split(",").forEach(file => {
logger.log("info", "Loading ruleset file " + file); logger.log("info", "Loading rule set file " + file);
let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file + '.rule.json', 'utf8')); let newRuleSet = JSON.parse(fs.readFileSync('./rules/' + file + '.rule.json', 'utf8'));
logger.log("info", "Adding ruleset " + Object.keys(newRuleSet)[0]); logger.log("info", "Adding rule set " + Object.keys(newRuleSet)[0]);
this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]] this.ruleSet[Object.keys(newRuleSet)[0]] = newRuleSet[Object.keys(newRuleSet)[0]]
}); });
} else { } else {
logger.log("info", "Loading ruleset file " + ruleSetFiles); logger.log("info", "Loading rule set file " + ruleSetFiles);
this.ruleSet = JSON.parse(fs.readFileSync('./rules/' + ruleSetFiles + '.rule.json', 'utf8')); this.ruleSet = JSON.parse(fs.readFileSync('./rules/' + ruleSetFiles + '.rule.json', 'utf8'));
logger.log("info", "Adding Ruleset " + Object.keys(this.ruleSet)[0]); logger.log("info", "Adding rule set " + Object.keys(this.ruleSet)[0]);
} }
} }
processData(inputLine) { processData(inputLine) {
@@ -47,13 +47,15 @@ exports.RuleEngine = class RuleEngine {
logger.log("debug", "ProcessingType " + inputLine.processingType); logger.log("debug", "ProcessingType " + inputLine.processingType);
let allWhiteFilterRules = this.ruleSet[inputLine.processingType].rules; let allWhiteFilterRules = this.ruleSet[inputLine.processingType].rules;
if (this.processLogicOr(allWhiteFilterRules, inputData)) { return (true); } if (this.processLogicOr(allWhiteFilterRules, inputData)) { return (true); }
logger.log("debug", "No whitelisting matched; returning false"); logger.log("debug", "No white listing matched; returning false");
return (false); return (false);
} }
processLogicAnd(allWhiteFilterRules, inputData) { processLogicAnd(allWhiteFilterRules, inputData) {
let retVal = true; let retVal = true;
logger.log("debug", "Logic AND - start"); logger.log("debug", "Logic AND - start");
for (let i = 0; i < allWhiteFilterRules.length; i++) { // if one condition is false the other one doens't need checking anymore,
// therefore including the retVal in the check condition of the below for loop
for (let i = 0; (i < allWhiteFilterRules.length && retVal); i++) {
let theWhiteFilterRule = allWhiteFilterRules[i]; let theWhiteFilterRule = allWhiteFilterRules[i];
logger.log("debug", " Logic AND - whiteFilterRule: " + JSON.stringify(theWhiteFilterRule)); logger.log("debug", " Logic AND - whiteFilterRule: " + JSON.stringify(theWhiteFilterRule));
if (theWhiteFilterRule.Logic === "-") { if (theWhiteFilterRule.Logic === "-") {