Java Drools规则结构

Java Drools规则结构,java,drools,rule-engine,business-rules,drools-fusion,Java,Drools,Rule Engine,Business Rules,Drools Fusion,嗨,我是Drools fusion的新手,我一直在开发一些示例规则来了解Drools fusion的工作原理。 我需要一些帮助来理解口水 我的规则: rule "Sample Rule" when $t:Test (num == 10) from entry-point Stream then System.out.println($t.str); end Test是一个具有str字符串和num整数的类。 我需要通过某种关联触发事件,以便它不断插入

嗨,我是Drools fusion的新手,我一直在开发一些示例规则来了解Drools fusion的工作原理。 我需要一些帮助来理解口水
我的规则:

rule "Sample Rule"

    when
     $t:Test (num == 10) from entry-point Stream
    then
        System.out.println($t.str);

end
Test是一个具有
str
字符串和
num
整数的类。

我需要通过某种关联触发事件,以便它不断插入测试对象并触发事件,因为这些对象的总和超过100,如: 规则“你的第一条规则”

我的代码是:

WorkingMemoryEntryPoint entryPoint1=ksession.getWorkingMemoryEntryPoint("Stream")
        def eg=new Test()
        eg.str="Test"
        eg.num=10
        EventFactHandle factHandle = (EventFactHandle)entryPoint1.insert(eg)
问题2:我想了解
fireAllRules()
的工作原理。每次我将一个对象插入drools运行时(入口点或会话),我是否需要用这个方法触发


我希望你能理解我的处境。请提前帮助和感谢

我不知道问题1应该是什么。我能看到那条线

($tmp>100)
语法错误;条件应该是前面模式的一部分,或者包含在eval()中


问题2:可以插入任意数量的事实并调用fireAllRules(),也可以在每次插入后调用fireAllRules()。但是,请注意,结果可能不同。考虑一个场景,一个规则一旦在一个X上触发,就移除事实X(),而另一个规则一旦出现了x()的两个事实,就会触发另一个规则。如果在每次插入后调用fireAllRules(),则第二条规则可能永远不会触发,

能否添加一些eval()的示例
($tmp>100)