2011-02-15 10 views
0

這是我的原則:的JBoss Drools的工作記憶多個事實

rule "Your First Rule" 

    when 
     $testRule : TestRule(count >= 100) 
    then 
     System.out.println("100 PACKETS!"); 
    end 

這是我如何創建規則庫和的WorkingMemory:

public void invokeRules(){ 
    RuleBase ruleBase = readRule(); \\creates ruleBase from DRL package 
    workingMemory = ruleBase.newStatefulSession(); 
    testRule = new TestRule(); 
    factHandle = workingMemory.insert(testRule);  
    workingMemory.fireAllRules(); 
} 

我有一個更新部分:

workingMemory.update(factHandle, testRule); 

我現在在WorkingMemory中獲得1個TestRule事實,並且該規則正在創建TestRule的另一個實例。我知道我正在實例化兩個TestRule事實,但只有WorkingMemory中的一個反應。我哪裏錯了?

(束手無策)

回答

1

不知道你的「規則已創建TestRule的另一個實例」是什麼意思?

您是否調用了workingMemory.fileAllRules();更新後立即更新?

+0

是的,我在更新後調用fireAllRules。插入到workingMemory中的類不被我的規則識別 – cwrwatson 2011-02-15 23:20:01