2014-03-19 130 views
0

我開始在Scala中使用Drools,執行http://www.gettingcirrius.com/2010/12/using-jboss-rules-drools-in-scala.html這個例子。但是,代碼運行時沒有錯誤,但規則不起作用。輸出是:scala:規則不能在drools中執行

Creating Knowledge Session 
Creating and insertng Temperature 
Firing all rules 

我發現有一個解決方案在這裏Help Drools integration with Scala和修訂後的Scala代碼被公佈在github上https://github.com/mariofusco/scaladrools。然而,即使我複製了這個項目,規則仍然不起作用,這讓我很困惑。

然後,我印刷一些錯誤:

Unable to Analyse Expression System.out.println(
    temp.value.toString + " F is too hot." 
    + " Declare HEAT WARNING!");: 
[Error: unable to resolve method using strict-mode: int.toString()] 
[Near : {... temp.value.toString + " F is too hot." ....}] 
        ^
[Line: 13, Column: 0] 
Unable to Analyse Expression System.out.println(
    temp.value.toString + " F is too cold." 
    + " Declare FREEZE WARNING!");: 
[Error: unable to resolve method using strict-mode: int.toString()] 
[Near : {... temp.value.toString + " F is too cold." ....}] 
        ^
[Line: 23, Column: 0] 

看來,在DRL文件中的toString方法是主要的問題。所以我刪除了drl中的.toString,一切正常。我使用的drool軟件包版本是6.0.1.Final,當我將它改爲5.4.0.Final時,它不會改變任何東西。這些問題讓我發瘋。誰能幫我?非常感謝!

+0

你有沒有試過'System.setProperty( 「drools.dialect.mvel.strict」, 「假」);'? – chemikadze

+0

是的,問題解決了!非常感謝,@chemikadze! –

+0

@chemikadze請發表您的評論作爲答案,以便它可以被接受:-)。 – gourlaysama

回答

1

一個可能的解決方案:

System.setProperty("drools.dialect.mvel.strict", "false")