package org.beanfuse.rule.engine.impl; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.beanfuse.rule.Context; import org.beanfuse.rule.engine.RuleExecutor; /** * 组合规则执行者 * @author chaostone * */ public class CompositeExecutor implements RuleExecutor { private List executors = new ArrayList(); /** 是否在单个规则失败后停止 默认为否 */ private boolean stopWhenFail = false; public boolean execute(Context context) { boolean result = true; for (Iterator iter = executors.iterator(); iter.hasNext();) { RuleExecutor executor = (RuleExecutor) iter.next(); result &= executor.execute(context); if (stopWhenFail && !result) { return result; } } return result; } public void add(RuleExecutor executor) { executors.add(executor); } public List getExecutors() { return executors; } public void setExecutors(List executors) { this.executors = executors; } public boolean isStopWhenFail() { return stopWhenFail; } public void setStopWhenFail(boolean stopWhenFailure) { this.stopWhenFail = stopWhenFailure; } }