Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 流口水不能开火_Java_Drools - Fatal编程技术网

Java 流口水不能开火

Java 流口水不能开火,java,drools,Java,Drools,我的项目中的Drools规则没有启动。我查看了官方文档和教程(不仅仅是官方的),没有发现任何东西 这是我的规则: package iwium.rules import iwium.*; rule "One" when $var : State(); then $var.setName("fired!"); System.out.println("fired!"); end 这就是我遵守规则并解雇他们的方式: public vo

我的项目中的Drools规则没有启动。我查看了官方文档和教程(不仅仅是官方的),没有发现任何东西

这是我的规则:

package iwium.rules

import iwium.*;

rule "One"
    when
        $var : State();
    then
        $var.setName("fired!");
        System.out.println("fired!");
end
这就是我遵守规则并解雇他们的方式:

public void run()
{
    createKnowledgeBase();

    //I do need to use it in infinite loop
    while (true)
    {
        kSession = kBase.newStatefulKnowledgeSession();

        State state = new State();
        kSession.insert(state);

        kSession.fireAllRules();

        //to check if rule fired
        for (Object o: kSession.getObjects()) {
            if(o instanceof State) {
                State rs = (State) o;
                if(rs.getName().length() > 1)
                    System.out.println("done");
            }
        }

        kSession.dispose();
    }
}

private void createKnowledgeBase()
{
    this.kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    this.kBuilder.add(ResourceFactory.newClassPathResource(RULES_FILE), ResourceType.DRL);

    if (kBuilder.hasErrors())
    {
        System.err.println(kBuilder.getErrors().toString());
    }

    kBase = KnowledgeBaseFactory.newKnowledgeBase();
    kBase.addKnowledgePackages(kBuilder.getKnowledgePackages());
}
输出为空。

我还检查了调试器是否正确编译了规则


有人知道这里有什么问题吗?为什么这个规则没有触发?

当你说它没有触发时,你的意思是
System.out.println(“fired!”)行未被写入?或者变量的值没有改变?另外,正在插入的
状态是否是
iwium.State
的一个实例?没有打印任何内容,也没有设置变量(在调试器和
fireAllRules()下面的这个循环中检查)
State
iwium.State
的实例。当你说它没有启动时,你的意思是
System.out.println(“启动”)行未被写入?或者变量的值没有改变?另外,正在插入的
状态是否是
iwium.State
的一个实例?没有打印任何内容,也没有设置变量(在调试器和
fireAllRules()下面的这个循环中检查)
State
iwium.State
的实例。当你说它没有启动时,你的意思是
System.out.println(“启动”)行未被写入?或者变量的值没有改变?另外,正在插入的
状态是否是
iwium.State
的一个实例?没有打印任何内容,也没有设置变量(在调试器和
fireAllRules()下面的这个循环中检查)
State
iwium.State
的实例。