今天小编给大家分享一下drools入门案例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。最近在学习规则引擎drools
,此处简单记录一下drools
的入门案例。drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存免费云主机域名放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。假设我们存在如下场景:在我们到商店购买衣服的时候,经常会发生这样的事情,购买1件不打折,购买2件打0.98折,购买3件级以上打0.85折。
那么我们在代码中如果要实现上述功能,是不是就需要编写if ... else
语句,假设后期规则变了,是不是就需要修改这些if ... else
语句,然后程序重新部署。这样是可以实现,但是不够优雅。那么我们是否可以将这些业务规则写入到规则文件中,以后规则变更直接修改规则文件即可?而drools
就可以实现这个功能。此配置文件需要放置在resources/META-INF
目录下。此处我们需要关注一下 kbase
下package
的值,这个值需要和规则文件中的package
值一致,否则会找不到规则,具体看下方。规则文件的名字无所谓,比如: book-discount.drl
如果 shop-discount.drl
的包名修改为com.huan.shop1
则会提示如下警告:12:43:01.589 [main] WARN org.drools.compiler.kie.builder.impl.KieBuilderImpl – File ‘com/huan/shop/shop-discount.drl’ is in folder ‘com/huan/shop’ but declares package ‘com.huan.shop1’. It is advised to have a correspondance between package and folder names.此对象保存的是用户购买了几件衣服和对应的折扣。1、无状态测试方法statelessSessionTest
规则规则2,即最终打0.98
折。
2、有状态测试方法statefulSessionTest
规则规则3,即最终打0.85
折。此处需要注意有状态session
和无状态session
写法的区别。到此,我们使用drools
实现的一个简单的案例就实现了。1、Rules
:我们自己定义的业务规则,比如我们自己写的规则文件。所有规则必须至少包含触发规则的条件和规则规定的操作。
2、Production memory
:规则存储在 Drools 引擎中的位置。
3、Facts
:输入或更改到 Drools 引擎中的数据,Drools 引擎匹配规则条件以执行适用规则。在规则中修改了Fact对象的值,真实的JavaBean的数据也会发生改变。
比如:当我们调用ksession.insert(对象)
,那么插入的这个对象就可以理解成Facts
对象。
4、Working memory
:facts 在 Drools 引擎中存储的位置。
5、Pattern matcher
:匹配器,将Rule Base中所有的规则与Working memory
中的Fact
对象进行模式匹配,匹配成功的规则将被激活并放入到Agenda
中。
6、Agenda
:议程,执行Agenda中被激活的排好序的规则。以上就是“drools入门案例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
这篇文章主要介绍“python中的代码缩进规则是什么”,在日常操作中,相信很多人在python中的代码缩进规则是什么问题上存免费云主机域名在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中的代码缩进规则是什么”的疑惑有所帮助!…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。