当前位置: 首页 > 工具软件 > Drools.NET > 使用案例 >

Drools如何使用

尹赞
2023-12-01

Drools如何使用

使用一个新技术时。首先了解其作用,具体的这里不再过多的阐述。
参考:https://blog.csdn.net/u013115157/article/details/64922653

Drools几种使用方式

1.使用Drl方件进行规则书写

package com.hello
import com.hello.Hi

rule "hello" 
when
   eval(true)
then 
    System.out.println("Hello!!!");
end

从上面截图我们可以看出drl文件的规范

package  包
import      引入类
rule ""      规则名称
when       规则条件(eval true 代表条件成立)
then        规则动作部分(当when部分成立时执行)
end         结束

使用drl文件进行规则书写的缺点:仅限于开发/懂得编程人员开发与维护。所以我们使用drools提供的动态编译功能。

2.结合数据库动态编译规则文件

解决的问题:
       1.不再进行书写规则文件。2.基于类对象与数据库存储的基础可脱离程序员使得业务人员最快的上手规则文件的配置。3.程序员在开发中只关心事实对象而无需关心业务规则。

核心代码:

            KieServices kieServices = KieServices.Factory.get();
            KieFileSystem kfs = kieServices.newKieFileSystem();
            kfs.write("src/main/resources/com/drools/rules/" + 规则内容, rule.getBytes("UTF-8"));
            KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
            if (kieBuilder.getResults().getMessages(Message.Level.ERROR).size() > 0) {
                throw new RuntimeException(kieBuilder.getResults().getMessages().toString());
            }
            KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
            KieBase kBase = kieContainer.getKieBase();
            KieSession kieSession = kBase.newKieSession();

以上截图。

重点:
规则内容:也就是如图1所示代码(通过界面化的配置,程序后台的动态处理生成drl文件)
kieSession:这个对象相信对drools有一定基础的知道它可以干什么。
     这里对kieSession对象重要常用方法进行介绍
     1.insert——进行事实对象的注入(示例:kieSession.insert(Object))
     2.setGlobal——进行全局对象的注入(示例:kieSession.setGlobal("key",value))
     3.fireAllRules——发现并执行规则(示例:num = session.fireAllRules()   num返回规则执行条数)
     4.dispose——释放资源(示例:session.dispose())

梳理一下之后的Drools博客的路线
1.动态编译规则的数据库设计方案
2.拼接drl语句(头部分、基本条件部分、when部分、them部分、以及最深的一些函数等等)
3.缓存实现
4.Aop实现规则的执行日志

关注作者,持续更新哦!!!

这里只介绍这两种方式(作者使用第二种进行Drools的使用与开发)


 

 类似资料: