`
yuqilin
  • 浏览: 2636 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

drools

阅读更多
Drools规则引擎初学入门实例HelloWorld

技术交流群:342253738  
来自网络,不保证正确性



EclipseJBossUPIDEGo
2009-01-14 11:32(1)下载eclipse(www.eclipse.org),如果是一般的java开发,下载Eclipse IDE for Java Developers就行了,解压后即可使用;

(2)下载Drools(http://jboss.org/drools/downloads.html),目前最新版本是Drools 4.0.7 Binaries,下载后解压即可;

(3)之后下载eclipse的Drools插件,版本跟eclipse对应,目前有Drools 4.0.7 Eclipse 3.2 Workbench和Drools 4.0.7 Eclipse Europa 3.3 Workbench两种。

         Drools插件解压后,将里面的org.drools.eclipse_4.0.7.jar文件copy到eclipse的plugins目录中,重启eclipse,在工具栏可以看到一个  图标,这就是Drools的工作台,之后就可通过这个按钮创建Drools resource文件了。

(4)开始Hello World

Java文件:DroolsTest.java

package com.sample;

import java.io.InputStreamReader;
import java.io.Reader;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;

/**
* This is a sample file to launch a rule package from a rule source file.
*/
public class DroolsTest {

    public static final void main(String[] args) {
        try {
        
         //load up the rulebase
             RuleBase ruleBase = readRule();
             WorkingMemory workingMemory = ruleBase.newStatefulSession();
           
            //go !
             Message message = new Message();
             message.setMessage(  "Hello World" );
             message.setStatus( Message.HELLO );
             workingMemory.insert( message );
             workingMemory.fireAllRules();  
           
           
         } catch (Throwable t) {
             t.printStackTrace();
         }
     }

    /**
      * Please note that this is the "low level" rule assembly API.
      */
private static RuleBase readRule() throws Exception {
  //read in the source
   Reader source = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.drl" ) );
 
  //optionally read in the DSL (if you are using it).
  //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );

  //Use package builder to build up a rule package.
  //An alternative lower level class called "DrlParser" can also be used...
 
   PackageBuilder builder = new PackageBuilder();

  //this wil parse and compile in one step
  //NOTE: There are 2 methods here, the one argument one is for normal DRL.
   builder.addPackageFromDrl( source );

  //Use the following instead of above if you are using a DSL:
  //builder.addPackageFromDrl( source, dsl );
 
  //get the compiled package (which is serializable)
   Package pkg = builder.getPackage();
 
  //add the package to a rulebase (deploy the rule package).
   RuleBase ruleBase = RuleBaseFactory.newRuleBase();
   ruleBase.addPackage( pkg );
  return ruleBase;
}

public static class Message {
  public static final int HELLO = 0;
  public static final int GOODBYE = 1;
  public static final int GAME_OVER = 2;
 
  private String message;
 
  private int status;
 
  public String getMessage() {
   return this.message;
   }
 
  public void setMessage(String message) {
   this.message = message;
   }
 
  public int getStatus() {
   return this.status;
   }
 
  public void setStatus( int status ) {
   this.status = status;
   }
}
   
}
选择插件Drools按钮里的"New Rule resource",建立规则(rule)文件:Sample.drl

package com.sample

import com.sample.DroolsTest.Message;

rule "Hello World"
when
   m : Message( status == Message.HELLO, message : message )
then
   System.out.println( message );
   m.setMessage( "Goodbye cruel world" );
   m.setStatus( Message.GOODBYE );
   update( m );
end

rule "GoodBye"
no-loop true
when
   m : Message( status == Message.GOODBYE, message : message )
then
   System.out.println( message );
   m.setStatus(Message.GAME_OVER);
   m.setMessage("game over now!");
   update( m );
end

rule "game over"
when
   m : Message( status == Message.GAME_OVER)
then
   System.out.println( m.getMessage() );  
end
注意:文件要放在相应的包里,然后编译—执行,当时出现了错误,查找资料,还需要加载包,包括:

<1> Drools 4.0.7目录下的drools-core-4.0.7.jar,drools-compiler-4.0.7.jar

<2> Drools 4.0.7\lib目录下的antlr-runtime-3.0.jar,mvel-1.3.1-java1.4.jar

<3>以及eclipse\plugins目录下的org.eclipse.jdt.core_3.2.3.v_686_R32x.jar(不同版本,包名会稍有不同)。

重新运行,应该就不会有错了。执行结果如下:

Hello World
Goodbye cruel world
game over now!
分享到:
评论

相关推荐

    drools drools drools drools drools

    drools 是一个强大的规则引擎和业务规则管理系统,用于在Java应用程序中实现复杂的业务逻辑。它基于规则推理,允许用户以声明式的方式定义规则,并在运行时执行这些规则。drools 提供了一个高效的决策自动化框架,...

    Drools

    Drools是一款强大的Java规则引擎,它为业务规则管理提供了高效、灵活且可扩展的解决方案。作为基于模型的决策自动化工具,Drools允许开发者将复杂的业务逻辑编码为一系列易于理解和维护的规则,这些规则可以独立于...

    drools7.25中文文档+drools技术指南.zip

    Drools是一款强大的业务规则管理系统(BRMS),它基于Java平台,主要用于实现复杂业务规则的管理和执行。Drools7.25是该系统的一个重要版本,提供了许多新特性和性能改进,使得开发者能够更高效地处理和执行业务规则...

    Drools6.5 部署Drools Workbench和Kie Server笔记

    在本文中,我们将深入探讨如何部署Drools Workbench和Kie Server,这两个组件是Drools6.5——一个强大的规则引擎平台的关键部分。Drools Workbench提供了一个直观的用户界面,用于创建、测试和管理业务规则,而Kie ...

    规则引擎Drools.NET移植版

    **规则引擎Drools.NET移植版** Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行...

    drools动态生成规则文件

    drools动态生成规则文件是基于Java的业务规则管理系统,它允许开发者在运行时创建、修改和执行业务规则。 Drools是Red Hat JBoss BRMS(Business Rules Management System)的一部分,它提供了一种强大的规则引擎,...

    Drools开发教程、规则引擎.pdf

    Drools是一个基于Java的业务规则管理系统(BRMS),它提供了强大的业务规则引擎,允许开发者通过定义业务规则来实现业务逻辑的动态变更,而无需改变代码。Drools5是该系统的其中一个版本,它在开发、运行和调试环境...

    Drools规则引擎使用demo

    Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...

    springboot+drools动态模板引擎

    SpringBoot和Drools的整合应用为业务规则的管理和执行提供了强大的灵活性。SpringBoot作为一个轻量级的Java开发框架,简化了Spring应用的初始化和配置,使得开发过程更加高效。而Drools则是一个强大的规则引擎,它...

    Drools7 + Springboot2 动态更新规则

    在本文中,我们将深入探讨如何将Drools 7与Spring Boot 2集成,实现动态更新规则的功能。Drools是一款强大的业务规则管理系统,而Spring Boot是Java领域广泛使用的微服务开发框架。通过结合这两者,我们可以构建一个...

    Drools workbench文件及DEMO项目代码

    Drools工作台(Drools Workbench)是一款基于规则引擎Drools的集成开发环境,主要用于创建、测试和管理业务规则。它提供了一个图形化的用户界面,使得业务分析师和开发人员可以方便地进行规则的编写和管理。在这个...

    Drools开发最全中文版技术指南

    《Drools开发最全中文版技术指南》是一份针对Java开发者的重要参考资料,它全面讲解了如何使用Drools这一强大的规则引擎进行业务逻辑的构建和管理。Drools是Red Hat公司推出的一个开源规则引擎,它基于Java,支持...

    Drools7.25中文文档.7z

    《Drools 7.25中文文档》是针对Java开发者的重要参考资料,它详细阐述了Drools这一强大规则引擎的使用方法。Drools是一个开源的业务规则管理系统,它基于Java平台,允许开发者轻松地在应用程序中实现复杂的业务规则...

    drools文档教程-规则引擎文档

    Drools 规则引擎文档教程 Drools 规则引擎是一种基于 Java 的开源规则引擎,主要用来解决复杂的业务逻辑问题。下面是 Drools 规则引擎在在线申请信用卡业务场景中的应用。 问题引出现有一个在线申请信用卡的业务...

    Drools-中文技术指南.pdf

    《Drools中文技术指南》全面解析 Drools,原名为JBoss Rules,是一款强大的开源业务规则引擎,旨在让企业策略的访问、调整和管理变得更加简单高效。它基于Charles Forgy的Rete算法,提供了面向对象(OO)的接口,使...

    基于drools7.9 动态更新rule

    **基于Drools 7.9动态更新Rule详解** Drools是一款强大的、开源的Java规则引擎,它允许开发者在运行时动态地修改业务规则,从而实现灵活的业务逻辑管理。Drools 7.9版本是其稳定的一个版本,提供了更高效的执行效率...

    idea开发drools的设置文件

    ** Drools 概述 ** Drools 是一个开源规则引擎,它允许开发者编写和执行业务规则,使得软件系统能够根据预定义的条件自动做出决策。Drools 提供了一个强大的规则语言(DRL - Drools Rule Language)来声明规则,...

    Drools规则引擎介绍.ppt

    【Drools规则引擎介绍】 Drools是一款由JBoss公司开发的开源规则引擎,它致力于将业务规则从复杂的业务逻辑代码中分离出来,实现业务规则的独立管理和灵活变更。Drools基于Rete算法,这是一套高效的规则匹配算法,...

Global site tag (gtag.js) - Google Analytics