定义规则接口
规则实现
规则组(可以根据业务场景 定义规则组)
规则引擎,并发执行多个规则或者串行执行,通过Context上下文,将每个规则执行的结果放到上下文中
可以使用流程引擎,支持规则的复用
class RuleContext{
List<RuleResult> ruleResults;
}
class RuleResult{
private boolean pass;
private String ruleName;
private Strng errorCode;
}
interface Rule{
String name();
boolean before( RuleContext ruleConetxt)
RuleResult execute(RuleContext ruleConetxt)
}
enum RuleGroup{
List<Rule> rules;
}
interface RuleEngine{
List<RuleResult> fire(RuleContext ruleConetxt,List<String> ruleName);
}
class RuleEngineImpl imlements RuleEngine{
List<RuleResult> fire(RuleContext ruleConetxt,List<String> ruleNames){
//通过spring容器根据ruleNames 获取所有的实例
然后可以使用并发框架执行,将所有的具体校验业务放到具体的规则实现中
然后将规则执行结果放到RuleContext中
}
}
针对一些规则校验,商户签约,商品等一些属性规则校验,可以把具体的规则当作基础能力