Drools入门学习

来源:互联网 发布:js 模块化开发 编辑:程序博客网 时间:2024/04/20 09:13

Eclipse安装Drools插件

具体步骤参见另外博客:http://blog.csdn.net/qq_37380557/article/details/75048813

Eclipse中添加Drools的运行环境

、1下载插件地址:http://www.drools.org/download/download.html

这里写图片描述

2、版本:droolsjbpm-tools-distribution-6.5.0.Final.zip,并进行解压

3、点击”Windows”—”Preferencess”,在窗口的树形菜单中选择”Drools”—”Installed Drools Runtimes”

这里写图片描述

这里写图片描述

在Path选择”……./drools-distribution-6.5.0.Final\binaries”

点击OK,重启Eclipse

创建Drools项目

1、创建Drools工程,”New”—”Project”—”Drools Project”—输入项目名—”Next”

这里写图片描述

这里写图片描述

选择编译代码所使用的规则引擎版本,这里选择”Drools 5.1 or above”,点击”Finish”。

自动生成Hello World示例,如下所示:

这里写图片描述

以下是工程自动生成的例子

Sample.drl :规则引擎的样例文件,该文件根据Drools规则语言语法编写

package com.sampleimport com.sample.DroolsTest.Message;rule "Hello World"    when       //LHS块         //在working Memory中,如果存在一个Message对象满足他的status属性等于Message.HELLO条件,         //就把满足条件的Message实例用变量m表示,他的message属性用myMessage表示,以便在RHS中使用。        m : Message( status == Message.HELLO, myMessage : message )    then        //RHS块         //在LHS中满足条件就运行RHS块。用到了LHS中的变量m,myMessage         System.out.println( myMessage );        m.setMessage( "Goodbye cruel world" );        m.setStatus( Message.GOODBYE );        update( m );//表示把此Message实例在 working memory中更新.这便会触发名称为"GoodBye"的endrule "GoodBye"    when        Message( status == Message.GOODBYE, myMessage : message )    then        System.out.println( myMessage );end

DroolsTest.Java:java测试类,用来读取Sample.drl 并运行,该文件使用Drools规则引擎的API进行编写

package com.sample;import org.kie.api.KieServices;import org.kie.api.runtime.KieContainer;import org.kie.api.runtime.KieSession;/** * This is a sample class to launch a rule. */public class DroolsTest {    public static final void main(String[] args) {        try {            // load up the knowledge base            KieServices ks = KieServices.Factory.get();            KieContainer kContainer = ks.getKieClasspathContainer();            KieSession kSession = kContainer.newKieSession("ksession-rules");            // go !            Message message = new Message();            message.setMessage("Hello World");            message.setStatus(Message.HELLO);            kSession.insert(message);            kSession.fireAllRules();//执行规则        } catch (Throwable t) {            t.printStackTrace();        }    }    public static class Message {        public static final int HELLO = 0;        public static final int GOODBYE = 1;        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;        }    }}


运行结果

这里写图片描述

原创粉丝点击