规则引擎的应用

断剑重铸之时 断剑重铸之时     2022-09-24     257

关键词:

java开源的规则引擎有:Drools、Easy Rules、Mandarax、IBM ILOG。使用最为广泛并且开源的是Drools。

       规则引擎的优点

    • 声明式编程
      规则可以很容易地解决困难的问题,并得到解决方案的验证。与代码不同,规则以较不复杂的语言编写; 业务分析师可以轻松阅读和验证一套规则。

    • 逻辑和数据分离
      数据位于“域对象”中,业务逻辑位于“规则”中。根据项目的种类,这种分离是非常有利的。

    • 速度和可扩展性
      写入Drools的Rete OO算法已经是一个成熟的算法。在Drools的帮助下,您的应用程序变得非常可扩展。如果频繁更改请求,可以添加新规则,而无需修改现有规则。

    • 知识集中化
      通过使用规则,您创建一个可执行的知识库(知识库)。这是商业政策的一个真理点。理想情况下,规则是可读的,它们也可以用作文档。

      Drools 介绍

      Drools 是一个基于Charles Forgy’s的RETE算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。 业务分析师人员或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。

      Drools 是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声明方式表达业务逻辑。可以使用非XML的本地语言编写规则,从而便于学习和理解。并且,还可以将Java代码直接嵌入到规则文件中,这令Drools的学习更加吸引人。

      Drools优点:

      • 非常活跃的社区支持
      • 易用
      • 快速的执行速度
      • 在 Java 开发人员中流行
      • 与 Java Rule Engine API(JSR 94)兼容

      Drools相关概念:

      • 事实(Fact):对象之间及对象属性之间的关系
      • 规则(rule):是由条件和结论构成的推理语句,一般表示为if…Then。一个规则的if部分称为LHS,then部分称为RHS。
      • 模式(module):就是指IF语句的条件。这里IF条件可能是有几个更小的条件组成的大条件。模式就是指的不能在继续分割下去的最小的原子条件。

      Drools通过 事实、规则和模式相互组合来完成工作,drools在开源规则引擎中使用率最广,但是在国内企业使用偏少,保险、支付行业使用稍多。

      简易实例代码:

      drools有专门的规则语法drl,就是专门描述具体业务的规则是如何执行的:

      package com.zhaozhi.spider.service.drools;
      rule "Drools Introduction"
      when
      $droolsIntro : DroolsIntroduction( topic == "Drools" )
      then
      System.out.println($droolsIntro.introduceYourself());
      end

      xml配置:

      <?xml version="1.0" encoding="UTF-8"?>
      <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
          <kbase name="rules" packages="rules">
              <ksession name="ksession-rules"/>
          </kbase>
      </kmodule>

      相关类与测试:

      public class DroolsIntroduction {
          private String topic;
      
          public DroolsIntroduction(String topic) {
              this.topic = topic;
          }
      
          public String getTopic() {
              return topic;
          }
      
          public String introduceYourself() {
              return "Drools 6.2.0.Final";
          }
      
      }
      
      public class DroolsRules {
      
          public static void fireAllRules(List<Object> rules){
              try {
                  KieServices ks = KieServices.Factory.get();
                  KieContainer kContainer = ks.getKieClasspathContainer();
                  KieSession kSession = kContainer.newKieSession("ksession-rules");
                  for(Object rule:rules){
                      if(rule!=null){
                          kSession.insert(rule);
                      }
                  }
                  kSession.fireAllRules();
              } catch (Throwable t) {
                  t.printStackTrace();
              }
          
          }
      }
      
      public class DroolsTest {
          
          
          @Before
          public void setUp() throws IOException {
              
          }
          
          @Test
          public void test(){
              List<Object> rules = Lists.newArrayList();
              rules.add(new DroolsIntroduction("hello"));
              rules.add(new DroolsIntroduction("Drools"));
              DroolsRules.fireAllRules(rules);
          }
          
          
          
      }

       

规则引擎的应用发展

...示层,使得产品更加优化,人性化,而1990年代后,使用规则引擎将业务规则分离单独管理,使得业务系统能够更加灵活变动,响应速度更加快速,旗正商业规则管理平台正式业务规则的管理专家规则引擎由推理引擎发展而来,... 查看详情

规则引擎的应用

java开源的规则引擎有:Drools、EasyRules、Mandarax、IBMILOG。使用最为广泛并且开源的是Drools。     规则引擎的优点声明式编程规则可以很容易地解决困难的问题,并得到解决方案的验证。与代码不同,规则以较不复杂的语... 查看详情

规则引擎easyrules介绍,应用及示例(代码片段)

浅析EasyRules规则引擎轻量级规则引擎EasyRulesJava规则引擎EasyRules一、EasyRules介绍1.1概述EasyRules是一个简单而强大的Java规则引擎,提供以下功能:轻量级框架和易于学习的API基于POJO的开发与注解的编程模型定义抽象的业务... 查看详情

什么事规则引擎

规则引擎一、规则引擎概述1.1什么是规则引擎1.2使用规则引擎的优势1.3规则引擎应用场景一、规则引擎概述1.1什么是规则引擎规则引擎,全称为业务规则管理系统,英文名为BRMS(即BusinessRuleManagementSystem)。规则引擎的主要... 查看详情

drrols规则引擎

1.什么是规则引擎?  规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来。规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相... 查看详情

规则引擎在数据分析中的应用

前言:规则引擎通过将业务规则和开发者的技术决策分离, 实现了动态管理和修改业务规则而又不影响软件系统的需求。以下通过实例对基于SQL 查询、自定义规则等一系列场景来说明规则引擎在数据分析中的应用。在现... 查看详情

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

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

数据驱动规则引擎 - Drools

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

JavaScript中的规则引擎[关闭]

】JavaScript中的规则引擎[关闭]【英文标题】:RuleEngineinJavaScript[closed]【发布时间】:2011-12-0110:59:10【问题描述】:JavaScript中有规则引擎吗?问题是在这种情况下:考虑一个具有用户填写表单的Web应用程序。当用户填写每个字段... 查看详情

开源业务规则引擎jbossdrools

Drools是什么?规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决... 查看详情

.netrulesengine规则引擎使用(代码片段)

        规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业... 查看详情

常用规则引擎

...ules首先集成了mvel表达式,后续可能集成SpEL的一款轻量级规则引擎easyrules是一个简单而强大的java规则引擎,它有以下特性:轻量级框架,学习成本低基于POJO为定义业务引擎提供有用的抽象和简便的应用从原始的规则组合成复杂... 查看详情

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... 查看详情

履约核心引擎低代码化原理与实践

业界,规则引擎是一个非常普遍的技术类工具,也有很多非常优秀的开源工具,例如Drools等,它是一种嵌入在应用程序中的组件,主要解决易变逻辑和业务耦合的问题,把易变的规则从应用程序代码中分离出来,进而提升交付效... 查看详情

简说规则引擎在促销返利领域的应用

   大型生产型企业销售渠道的建设,一般都采用代理商政策。根据地区、产品等情况,设立不同级别的代理商,不同地区、不同级别代理商有着不同的促销返利政策,也需根据企业、市场现状对促销政策进行调整,另... 查看详情

golang规则引擎原理及实战(代码片段)

本文主要介绍规则引擎在golang中的使用,将首先介绍golang中主要的规则引擎框架,然后利用golang原生的parser搭建一个简单的规则引擎实现基本的bool表达式解析工作。 背景随着业务代码的不断迭代,诞生出了越来越多... 查看详情

评估业务规则引擎的标准[关闭]

】评估业务规则引擎的标准[关闭]【英文标题】:CriteriatoEvaluateBusinessRulesEngines[closed]【发布时间】:2010-10-2102:03:23【问题描述】:我们正在购买业务规则引擎。我们希望使我们的核心应用程序可针对具有略微不同要求的不同客户... 查看详情

.NET 的业务规则引擎 [重复]

】.NET的业务规则引擎[重复]【英文标题】:BusinessRuleEnginefor.NET[duplicate]【发布时间】:2012-03-2603:02:27【问题描述】:可能重复:Lookingforsimplerules-enginelibraryin.NET我正在寻找一个用于.NET的规则引擎,该引擎将用于控制我们在ASP.NETMV... 查看详情