根据数据来匹配对应的条件,并执行规则匹配后的动作系统。如果满足某些条件,就执行相关动作。
可以帮助我们把多变的业务决策部分同其他业务逻辑隔离开,是的业务人员能够自行定制业务逻辑,无需开发人员介入。常用的有Drools,uRule,QLExpress,uniRule
java语言实现,不依赖任何外部脚本引擎解析
支持宏定义、支持扩展点、轻量级、高性能和可靠性
本质是脚本解释引擎,需要有个后台配合进行配置,成为规则引擎。
圈选及优惠计算上, 引入规则引擎 QLExpress,满足复杂营销
仅仅需要抽象出配置元素即可使用
String express = "如果 ((投放页面 是 'H5' 并且 人群 是 '新人') " +
"或者 商品ID 包含 [1,2,3] ) " +
"则 {return '符合XX活动条件';} 否则 {return '不符合条件';}";
DefaultContext<String, Object> context = new DefaultContext<String, Object>();
context.put("投放页面", "H5");
context.put("人群", "新人");
context.put("消费门槛", 10);
context.put("类目", "酒店");
context.put("商家ID", 1);
context.put("商品ID", 1);
context.put("SKU", 123);
String express = "如果 (价格 大于 300) 则 {返回 价格*0.8;} " +
"如果 (价格 大于 200) 则 {返回 价格*0.85;} " +
"如果 (价格 大于 100 ) 则 {返回 价格*0.9;} " +
"否则 {返回 价格;}";
DefaultContext<String, Object> context = new DefaultContext<String, Object>();
context.put("价格", 150);
Object r = runner.execute(express, context,
null, false, false, null);
System.out.println(r);
context.put("价格", 100);
System.out.println(runner.execute(express, context,
null, false, false, null));
context.put("价格", 50);