Drools同时更新同一对象
我有两个.drl文件: .dlr文件一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
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;