GithubHelp home page GithubHelp logo

bellmit / dynamic-drools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wigennn/dynamic-drools

0.0 0.0 0.0 182 KB

动态更新规则的drools规则引擎demo

License: GNU General Public License v3.0

Java 99.18% FreeMarker 0.82%

dynamic-drools's Introduction

dynamic-drools

动态更新规则的drools规则引擎demo

背景

遇到一个业务场景,现在需要对于审批的发票做各种规则校验,
对于提交审批的发票,符合规则的则自动审批通过,不符合的驳回。
通常对于发票字段的比较就是一个一个字段的去与定义的规则比较,硬编码,代码不高级,手动呵呵:)
了解到规则引擎,可以把比较的过程交给规则引擎执行,只需要定义相应的规则语句。
想了解下drools的使用,整体流程框架已写好,测试了下火车票根据规则检查,返回提示信息

为啥叫动态的更新规则?
因为一开始drools使用drl文件写死的规则语句,现在是把生成的规则语句存在表里,
修改规则信息,立马重新生成更新掉库里的规则语句,使之匹配时立马生效.

这里面可以做很多优化,比如规则语句可以放redis里,只要保证redis与数据库读写一致, 就不用校验时频繁的去查数据库获取rule_detail

主要使用技术栈

  • drools (规则引擎)
  • freemarker (模板引擎)
  • mysql

项目结构-包划分

项目结构-包划分

执行流程

执行流程

票据检查实现思路

主要分成两部分

  • 规则生成
    • 规则数据
    • 模板生成
  • 发票校验
    • 读取规则
    • 校验

测试类

1st.建库drools,根据sql建表
2nd.执行测试类方法
DroolsDemoApplicationTests

添加定义规则数据方法:insertInvoiceRuleDetail

计算drools规则并保存方法:saveRule

测试验证数据方法:getTrainInvoiceTest

票种

增值税票

火车发票票

汽车轮船发票

二手车发票

卷式发票

定额发票

机动车发票

通用发票

飞机航行单

其他发票

dynamic-drools's People

Contributors

wigen96 avatar wigennn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.