规则引擎很多人都听过,实现方案有很多:
1、用开源的方案 drools 基于 RETE 决策算法
2、基于groovy java 动态语言
3、自研的规则引擎
在我们选型过程,发现drools性能并不是很好,于是决定自研
思路通过 javaassist把java代码规则生成一个方法,支持本地规则和远程规则
测了下性能还算不错,比drools高一个数量级,性能还算不错, 简单贴下使用方法
UserFact userFact =new UserFact();
userFact.setAge(32);
userFact.setDevice("iphone x");
userFact.setOs("mac");
userFact.setRegion("杭州");
userFact.setSex("男");
RuleEngine ruleEngine = RuleEngine.getInstance("abtest",new LoadRuleFromClassPath());
AbAction abAction = ruleEngine.execute(userFact);
assertNotNull(abAction);
网友评论