首页 文章

在Eclipse中开始使用Drools 6.0.0 Final时获得NPE

提问于
浏览
0

Getting started (Without Maven) 我在eclipse中首次安装了GEF和Drools 6.0.0最终插件 . 然后我创建了一个Drools项目,它生成了下面的两个文件 .

DroolsTest.java

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;
    }

}

}

Sample.drl

package com.sample

import com.sample.DroolsTest.Message;

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

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );
end

由于缺少 ksession-rules ,我在 kSession.insert(message); 得到了NPE

KieSession kSession = kContainer.newKieSession("ksession-rules");

当我为这个项目编写mavenize并将其作为maven测试运行时,我得到同样的东西 . 我注意到一些人已经经历过这个并且指向类路径问题,但我仍然不清楚解决方案 .

mvn eclipse:eclipse 也没有帮助 .

链接我已经通过了

1 回答

  • 0

    在github中通过Drools 6.0.0之后,我看到一个文件kModule.xml应该出现,其中会话名称“ksession-rules”与规则相关联 . 这个文件没有生成(bug ??)

    然而,我正在降级到5.6.0以获得更好的社区支持和良好的文档 .

相关问题