动态更新规则的drools规则引擎demo
遇到一个业务场景,现在需要对于审批的发票做各种规则校验,
对于提交审批的发票,符合规则的则自动审批通过,不符合的驳回。
通常对于发票字段的比较就是一个一个字段的去与定义的规则比较,硬编码,代码不高级,手动呵呵:)
了解到规则引擎,可以把比较的过程交给规则引擎执行,只需要定义相应的规则语句。
想了解下drools的使用,整体流程框架已写好,测试了下火车票根据规则检查,返回提示信息
为啥叫动态的更新规则?
因为一开始drools使用drl文件写死的规则语句,现在是把生成的规则语句存在表里,
修改规则信息,立马重新生成更新掉库里的规则语句,使之匹配时立马生效.
这里面可以做很多优化,比如规则语句可以放redis里,只要保证redis与数据库读写一致, 就不用校验时频繁的去查数据库获取rule_detail
- drools (规则引擎)
- freemarker (模板引擎)
- mysql
主要分成两部分
- 规则生成
- 规则数据
- 模板生成
- 发票校验
- 读取规则
- 校验
1st.建库drools,根据sql建表
2nd.执行测试类方法
DroolsDemoApplicationTests
添加定义规则数据方法:insertInvoiceRuleDetail
计算drools规则并保存方法:saveRule
测试验证数据方法:getTrainInvoiceTest