drools源于规则引擎

dafengchui dafengchui     2022-10-06     798

关键词:

一 前言 

     最早对Drools感兴趣,是起源于规则引擎.当时是希望能找一个开源工具来做一些规则的处理. 

     在官方网站上翻了半天资料,却发现Drools一直在强调它不只是一个简单的规则引擎,而是更多的引入工作流的概念. 
     之后最大的感触就是Drools牵涉到的东西比较多,甚至有一种依照Drools可以创造整个世界的感觉-- 这个世界本身不就是由各种规则/流程/事件构成的么? 这也是本文标题的由来. 

     以后会对Drools的各方面有一个比较深入的了解,因此这篇文章只是用来做简单的介绍,希望能在短时间内能让其他人对Drools做什么,怎么做,有一个直观的了解,以后遇到相关应用的场景时,能想到Drools的解决方案. 

 

二.从规则引擎的应用场景说起 

     昨天讲解PPT的时候有人问到Drools和If-else的本质区别在哪里.我想了想,还是想引用一句话来表述自己的感受.
          "南京一高职学生为了给男友发鲸鱼宝宝的短信涉嫌伪造健康证明捐精买iphone4。。。。" 

2.1 各种棋类游戏 

     象棋围棋五子棋跳棋军棋扑克牌三国杀杀人游戏强权外交等等等等.游戏本身就是规则的代名词. 

2.2 业务规则 
     超市打折,汇率计算等等等等. 
  
2.3 相通的场景 

     这些场景可能有一些相通的点,在这儿我可能总结的不会太全面,稍稍罗列一下: 
   
   

  •      单条规则相对简单
  •      规则数量相对庞大
  •      规则之间会有冲突
  •      一条规则本身会触发另一条规则
  •      规则有可能会产生变动(很多时候可能唯一需要变动的就是规则)


    
    这个时候用规则引擎来处理这些事情就相对来说容易多了.不过,Drools做的远远不止这些. 


    
三 Drools的构成.    

    目前Drools的最新稳定版本是5.2.0.Final(23-Jun-2011). 现在由JBoss维护,分成五个模块. 

     下面就简单的介绍下每一个模块的内容,可以大致的了解下Drools的发展方向和可以用来解决问题的范畴.    

3.1 Guvnor     

     Guvnor是一个通过Web界面可以管理,更改规则的工具,也可以提供Repository的服务.(似乎各种开源软件里都会提供这样的Web管理界面,Heritrix,Nutch,AllGeography等等等等).支持Dsl和QA.  
     
3.2 Expert          

     传统的规则引擎,应该说Drools的核心,也是前身.通过Rete算法来实现模式匹配. 
     
3.3 Jbpm5 

     工作流的处理交给了JBPM5这个模块.这个模块我了解的不多,大概知道的是除了工作流之外还提供了各种各样的集成(Camel,Spring,Osgi等等,感觉这个模块本身的规划不是特别清晰).其中Camel适用于路由转发.有了解的较多的朋友可以指教一下,或者以后有时间我会再了解一下相关的内容.      
      
3.4 Fusion 

     用于做CEP的处理.本来是不太懂CEP的,这个概念接触的不算多.不过看到了Wiki上的一个例子,大概明白一些. 
     摘录如下: 
    

规则文件的使用

 

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();  
kbuilder.add(ResourceFactory.newClassPathResource("demo.drl"), ResourceType.DRL);  
  
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();  
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());  
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();  
  
Employee employee=new Employee("段三品");  
employee.setClockedAt(System.currentTimeMillis());  
  
ksession.insert(employee);  
ksession.fireAllRules();

 

java规则引擎drools急速入门

文章目录​​1.Drools规则引擎简介​​​​2.DroolsAPI开发步骤​​​​3.SpringBoot整合Drools案例​​​​4.Drools基础语法​​​​5.Drools条件语法部分​​​​6.Drools结果操作部分​​​​7.Drools内置属性部分​​​​8.Drools高级语法... 查看详情

规则引擎drools介绍使用及springboot整合drools(代码片段)

规则引擎Drools介绍、使用及SpringBoot整合Drools一、Drools介绍1.1优点1.2架构1.2.1Drools引擎的核心组件1.2.2规则引擎工作流程简述1.3Drools语法1.3.1规则文件1.3.1.1.规则详情1.属性详情2.条件部分-LHS3.结果部分-RHS1.3.1.2Drools关键词1.3.1.3Drools... 查看详情

数据驱动规则引擎 - Drools

】数据驱动规则引擎-Drools【英文标题】:DataDrivenRulesEngine-Drools【发布时间】:2013-08-2322:51:57【问题描述】:我一直在评估Drools作为我们的业务Web应用程序中使用的规则引擎。我的用例是一个订单管理应用程序。规则如下:-如果... 查看详情

java规则引擎--drools

Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。 本文所使用的demo已上传 http... 查看详情

drools规则引擎环境搭建(代码片段)

一、关于drools规则引擎前面写过一篇Drools规则引擎相关的文章,这篇文章主要记录一下规则引擎的环境搭建和简单示例。不熟悉drools的朋友可以看看这篇文章:自己写个Drools文件语法检查工具——栈的应用之编译器检测语法错误... 查看详情

drools规则引擎brms

安装说明|Drools中文网http://www.drools.org.cn/category/installDrools规则引擎-在微服务中的应用-简书https://www.jianshu.com/p/887ff9021eb3Drools规则引擎-在微服务中的应用-简书https://www.jianshu.com/p/887ff9021eb3微服务组件-规则引擎-Fx_demon-OSCHINAhttps://my... 查看详情

springboot+drools规则引擎整合

...gBoot项目的很少。本文介绍如何在SpringBoot项目上加上Drools规则引擎。POM依赖POM文件如下:<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta 查看详情

如何快速学习 Drools 或其他规则引擎 [关闭]

】如何快速学习Drools或其他规则引擎[关闭]【英文标题】:howtolearnDroolsoranotherruleenginefast[closed]【发布时间】:2011-02-0602:08:03【问题描述】:我们正在着手开发一个模块,该模块将根据某些标准生成一些建议。标准将采用一组业... 查看详情

规则引擎drools的简单使用

规则引擎适用于有复杂多变的规则,如商品满减、积分赠送、考勤规则等一、引入maven依赖<dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>7.13.0.Final</version></de 查看详情

springboot2整合drools规则引擎,实现高效的业务规则

...这里一、Drools引擎简介1、基础简介Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。... 查看详情

规则引擎调研(drools和qlexpress)

参考技术A1.问题分析目前存在比较多的判断规则。而且分支逻辑过多,经常出现一些规则判断出现的数据问题。所以需要抽取一些规则条件。利用框架避免问题异常的出现2.框架调研目前常用的规则引擎如下:•常见的规则引... 查看详情

决策树和规则引擎 (Drools)

】决策树和规则引擎(Drools)【英文标题】:Decisiontreesandruleengines(Drools)【发布时间】:2011-06-2017:20:33【问题描述】:在我现在正在处理的应用程序中,我需要定期检查数以万计的对象是否符合某种服务的要求。决策图本身采用以... 查看详情

规则引擎drools在贷后催收业务中的应用

...gXiang在日常业务开发工作中我们经常会遇到一些根据业务规则做决策的场景。为了让开发人员从大量的规则代码的开发维护中释放出来,把规则的维护和生成交由业务人员,为了达到这种目的通常我们会使用规则引擎来帮助我们... 查看详情

规则引擎drools6.4.0.final

java实现规则引擎:原理不多说,自己查阅资料吧;搭建环境:mavenspring(今天上图spring框架下搭建规则引擎);1:maven依赖;<dependency><groupId>org.kie</groupId><artifactId>kie-api</artifactId><version>$drools-vers 查看详情

规则引擎drools的使用(代码片段)

引入maven<dependency><groupId>org.drools</groupId><artifactId>drools-templates</artifactId><version>7.14.0.Final</version></dependency><dependency>& 查看详情

35activiti整合规则引擎drools(代码片段)

喜欢关注公众号:java乐园日常生活是由规则驱动的。红灯停绿灯行,这是我们的交通规则;我们站着往上跳,最终还是要落下来,这是地球的引力规则。规则在生活中无处不在。软件开发中我们也需要规则,满足什么规则应该... 查看详情

什么时候使用规则引擎drools

参考技术A规则引擎一般是一下情况使用1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。3.为了快速、低成本的更新,业务人... 查看详情

java使用规则引擎drools出现异常

异常如下,但是算出来的数没有问题Exceptioninthread"Thread-16"java.lang.RuntimeException:Classnotconvertibletoprimitive:java.lang.Objectatorg.drools.core.util.ClassUtils.convertToPrimitiveType(ClassUtils.java:378)atorg.drools.rule.constraint.ConditionAnalyzer$AritmeticExpress... 查看详情