业务背景
某商城平台,目前有上百家的门店,五月1号平台需要搞满减促销活动,但是每家门店的促销规则又有区别,虽然可以通过Drools规则引擎能够解决相关决策问题,但是我们不可能为每一个门店去创建一个规则文件,这种实现显然是不合理的,那么将如何实现呢?
解决方案
针对上述的需求,我们需要设计一张规则表,由每个门店根据业务情况创建不同促销规则,然后通过规则模板生成具体的规则文件。
具体实现
设计业务规则表
定义规则模板
新增规则模板文件orderdiscounttemplate.drt,具体内容如下:
template header
min
max
costMoney
package com.skywares.fw.drools;
import com.skywares.fw.drools.pojo.Order;
template "discount"
rule "calculate rule_@{row.rowNumber}"
no-loop true
when
$order: Order(totalMoney>@{min} && totalMoney<=@{max})
then
$order.setPayMoney($order.getTotalMoney()-@{costMoney});
System.out.println("订单金额大于@{min}小于等于@{max}优惠");
update($order);
end
end