package org.beanfuse.rule.engine.impl;
import java.util.List;
import org.beanfuse.rule.Context;
import org.beanfuse.rule.RuleBase;
import org.beanfuse.rule.engine.Agenda;
import org.beanfuse.rule.engine.Engine;
import org.beanfuse.rule.engine.PatternMatcher;
import org.beanfuse.rule.engine.RuleExecutor;
import org.beanfuse.rule.engine.RuleExecutorBuilder;
public class SimpleEngine implements Engine {
protected PatternMatcher matcher;
protected RuleBase base;
protected RuleExecutorBuilder executorBuilder;
protected boolean stopWhenFail = false;
public void execute(Context context) {
Agenda agenda = matcher.buildAgenda(base, context);
List rules = agenda.getRules();
RuleExecutor executor = executorBuilder.build(rules, stopWhenFail);
executor.execute(context);
}
public PatternMatcher getPatternMatcher() {
return matcher;
}
public void setPatternMatcher(PatternMatcher matcher) {
this.matcher = matcher;
}
public RuleBase getRuleBase() {
return base;
}
public void setRuleBase(RuleBase base) {
this.base = base;
}
public RuleExecutorBuilder getRuleExecutorBuilder() {
return executorBuilder;
}
public void setRuleExecutorBuilder(RuleExecutorBuilder executorBuilder) {
this.executorBuilder = executorBuilder;
}
public boolean isStopWhenFail() {
return stopWhenFail;
}
public void setStopWhenFail(boolean stopWhenFail) {
this.stopWhenFail = stopWhenFail;
}
}