Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Drools同时更新同一对象_Drools - Fatal编程技术网

Drools同时更新同一对象

Drools同时更新同一对象,drools,Drools,我有两个.drl文件: .dlr文件一 rule "Lower Elementary Level" no-loop when $m: MockBean ( overAllScore >= 40.51 && overAllScore < 60.76 ) $s : StudentMockBean() then $s.setKnowledgeLevel( "Lower Elementary Level

我有两个.drl文件:

.dlr文件一

rule "Lower Elementary Level"
    no-loop

    when
        $m: MockBean ( overAllScore >= 40.51 && overAllScore < 60.76 )
        $s : StudentMockBean()
    then
        $s.setKnowledgeLevel( "Lower Elementary Level" );
        update( $s );
end

// some other condition
我启动了两个规则,两个.drl文件都满足条件,但它们正在更新相同的对象


我的问题是,为什么我的web应用程序总是无限加载?

您的规则组合导致了无限循环。 即
规则A激活->规则A激活->修改$s->规则B激活->规则B激活->修改$s->规则A激活->规则A激活->修改$s->规则B激活->规则B激活->。

无循环
不足以解决这种情况。 要更好地解释发生了什么以及解决问题的可能方法,请阅读

希望有帮助

rule "Concept Lower Elementary Level"
    no-loop

    when
        $m: MockBean ( mockOneScore >= 40.51 && mockOneScore < 60.76 )
        $s : StudentMockBean()
    then
        $s.setMockOneKnowledgeLevel( "Lower Elementary Level" );
        update( $s );
end

// some other condition
...
for( String fileName : aRuleFileName )
{
     kbuilder.add( ResourceFactory.newClassPathResource( fileName, getClass() ), ResourceType.DRL );
}

// get error

KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );

return kbase;