Giter Club home page Giter Club logo

droolslearn's Introduction

Drools学习与使用

DroolsLearn工程:初步探索Drools的使用,记录发现的如下问题及其解决原因(可以看到,里面主要是利用kmodule.xml来记录相关规则库与对应规则文件)

/**

参照http://3ms.huawei.com/km/blogs/details/8127757 体验在IDEA中如何搭建起基于Drools的规则引擎体验 同时, 参照 https://www.open-open.com/lib/view/open1449191572077.html 来验证规则文件是否支持热加载,即更改规则文件后立即生效 20210909 经过这次试验,发现了两个问题: (1) 通过读Drools的在线帮助文档(https://docs.jboss.org/drools/release/7.33.0.Final/drools-docs/html_single/#architecture-scenarios-ref_decision-management-architecture), 参照2.2.2.1 小节,才知道,原来,如果仅是是一个空的kmodule.xml文件,则规则引擎会遍历执行resources下所有规则引擎——通过这个,才逐步更改 kmodule.xml文件和各规则文件,才发现,要求规则文件中的package 后的名称需要与该规则文件所在resources中的目录名层级一致,且与kmodule.xml、 中的packages保持一致,才能执行到规则。之前,好几天运行,程序都没有报错,但是规则没有触发,最开始跟踪过Drools里的执行过程,发现好像是Drools中 在判断我们的java bean类时,发现对应FACT判断不等,原本以为是类加载问题,参照https://issues.redhat.com/browse/DROOLS-1540 这个没有解决, 而且那个问题在7.23.0.Final已解决。这次通过明确怀疑kmodule.xml并试验才解决。 (2) 本程序写了个无限循环,然后,在循环中提供重新初始化Drools引擎及Session的方式,然后在这个过程中更新了规则文件,发现不重启程序,新的规则 并不会生效。

DynamicDroolsFile工程: 这是我自己参照对应Drools版本的kmodulemodel-example样例工程写的,主要是为了实现动态加载规则文件(为了将规则文件放在工程jar包外,通过修改规则文件配置,动态生效),可以看到,里面没有kmodule.xml文件了,而是通过代码及主要基于KieModuleModel和KieFileSystem来生成内存文件系统kmodule.xml和src/resources下的规则文件。

droolslearn's People

Contributors

huahero avatar

Stargazers

Alexander avatar

Watchers

James Cloos avatar  avatar  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.