一、简介
阿里规则引擎qlexpress是阿里巴巴集团出品的一款极其灵活的规则引擎,可在运行时解析规则,无需重启服务,支持动态新增、修改、删除规则,可以满足各种场景下的业务规则需求。
Qlexpress采用DRule(自动化决策规则)和DTable(自动化决策表)两种语言来编写规则。DRule基于自然语言描述场景,规则本身具有很强的可读性;DTable基于类似Excel表格的形式,可实现批量处理。
二、使用场景
阿里规则引擎qlexpress有很多使用场景,例如基于用户行为进行推荐系统、基于数据特征进行分类系统、基于事件的风控监测等。
三、DRule规则语言示例
/** * 满100-50元优惠券 * Rule Name: FullReductionCoupon * 规则名称:满100-50元优惠券 * 规则描述:购买金额满100元,可以获得50元优惠券 */ priority:1 //规则优先级,可选项 //规则条件 condition: orderAmount >= 100 //规则结论 conclude: result = 50
上面示例中,condition表示规则条件,即当订单金额达到100元时,就能够触发优惠券的发放;conclude表示规则结论,即满足条件后的优惠券金额为50元。
四、DTable规则语言示例
//自动审核处理规则表 //当信用分小于60分、提现金额大于5000元时,进行人工审核处理 rule_table AutoWithdrawalCheckRule{ //规则id condition_code:RuleId, //规则名称 condition_desc:RuleDesc, //优先级 priority:PriorityLevel, //规则适用地区 province:ProvinceCode, city:CityCode, district:DistrictCode, //规则条件 condition:CreditScore<60&&WithdrawAmount>5000, //处理方式 action:ManualReview, //规则状态 status:RuleStatus }
上面示例中,代表一个自动审核处理规则表,condition表示规则条件,即当信用分小于60分、提现金额大于5000元时,就需要进行人工审核处理;action表示处理方式,即需要进行人工审核。
五、规则引擎的实现
规则引擎的实现需要遵循以下步骤:
1、将规则表达为DRule或DTable语言。
2、将DRule或DTable语言编译成规则表现。
3、将数据与规则运行时表现交互。
六、结语
阿里规则引擎qlexpress是一款功能丰富、使用灵活的规则引擎,可在多种业务场景下使用。DRule和DTable的规则语言编写非常简单,规则表达自然、易读性高,非常适合业务人员、数据分析师使用。
完整代码示例:
/** * 满100-50元优惠券 * Rule Name: FullReductionCoupon * 规则名称:满100-50元优惠券 * 规则描述:购买金额满100元,可以获得50元优惠券 */ priority:1 //规则优先级,可选项 //规则条件 condition: orderAmount >= 100 //规则结论 conclude: result = 50
//自动审核处理规则表 //当信用分小于60分、提现金额大于5000元时,进行人工审核处理 rule_table AutoWithdrawalCheckRule{ //规则id condition_code:RuleId, //规则名称 condition_desc:RuleDesc, //优先级 priority:PriorityLevel, //规则适用地区 province:ProvinceCode, city:CityCode, district:DistrictCode, //规则条件 condition:CreditScore<60&&WithdrawAmount>5000, //处理方式 action:ManualReview, //规则状态 status:RuleStatus }