专栏名称: macrozheng
专注Java技术分享,解析优质开源项目。涵盖SpringBoot、SpringCloud、Docker、K8S等实用技术,作者Github开源项目mall(50K+Star)。
今天看啥  ›  专栏  ›  macrozheng

SpringBoot + 规则引擎 Drools,强!

macrozheng  · 公众号  · 科技自媒体  · 2025-01-13 10:32
    

主要观点总结

本文介绍了如何使用Drools规则引擎实现根据不同规则计算商品折扣的需求,包括引入依赖、创建配置类、定义业务模型、创建规则文件、定义Service层和Controller等步骤。

关键观点总结

关键观点1: 需求背景

根据文章描述,需要根据不同的规则计算商品折扣,如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而且这些规则可能随时发生变化,甚至增加新的规则。

关键观点2: 技术选型

采用Drools规则引擎来实现,Drools是一个开源的业务规则引擎,可以很容易地与spring boot应用程序集成。

关键观点3: 实现步骤

1. 引入Drools相关依赖;2. 创建Drools配置类;3. 定义业务模型;4. 创建规则文件;5. 定义Service层;6. 添加Controller。

关键观点4: 具体实现细节

1. 使用KieContainer加载规则文件构建规则引擎;2. 创建OrderRequest类作为输入信息发送给定义的Drools规则中计算折扣金额;3. 定义CustomerType枚举,规则引擎会根据该值计算客户订单折扣百分比;4. 创建OrderDiscount类表示计算得到的最终折扣;5. 在drl文件中定义多个规则,根据订单请求计算折扣;6. 在Service层注入KieContainer实例并创建KieSession实例,设置全局参数和订单对象,触发规则计算折扣。

关键观点5: 项目推荐

推荐一个开源电商项目mall,包括前端商城项目和后端管理系统,能支持完整的订单流程,涵盖商品、订单、购物车、权限、优惠券、会员、支付等功能。还提供了一个基于Spring Cloud+K8S的微服务项目实战视频教程。


文章预览

Boot+Cloud项目学习: macrozheng.com 前言 现在有这么个需求,网上购物,需要根据不同的规则计算商品折扣,比如VIP客户增加5%的折扣,购买金额超过1000元的增加10%的折扣等,而且这些规则可能随时发生变化,甚至增加新的规则。面对这个需求,你该怎么实现呢?难道是计算规则一变,就要修改业务代码,重新测试,上线吗。 其实,我们可以通过规则引擎来实现,Drools 就是一个开源的业务规则引擎,可以很容易地与 spring boot 应用程序集成,那本文就用Drools来实现一下上面说的需求吧。 引入依赖 我们创建一个spring boot应用程序,pom中添加drools相关的依赖,如下: < dependency >    < groupId > org.drools groupId >    < artifactId > drools-core artifactId >    < version > 7.59.0.Final version > dependency > < dependency >    < groupId > org.drools groupId >    < artifactId > drools-compiler artifactId > ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览