2013-10-05 75 views
0

我正在使用Guvnor構建規則項目。在我的DSL之一,我已經跟隨「後果」語句錯誤操作:Guvnor投擲異常(引導編輯器規則)

[when]Error "{message}"=throw new Exception("{message}");

如果我使用了DSL的規則,將所有與DSL句子的規則,它完美的作品。然而,使用指導編輯器,這並不工作,並審定說,類似的事情:

[Error: unable to resolve method using strict-mode: org.drools.spi.KnowledgeHelper.throw()] [Near : {... throw new Exception(" ...

有人知道我需要做的工作的嗎?這非常重要,因爲我的項目將被非IT人員使用。

謝謝。


由指導編輯器生成的源代碼非常簡單:

rule "exception test" 
    dialect "mvel" 
    when 
     eval(true); 
    then 
     throw new Exception("error message"); 
end 
+0

只是一個評論:你確定你的DSL是以'[when]開頭的,而不是'[then]'開頭的?否則,指導編輯將只允許您在規則的LHS中使用該DSL句子,這將是一個問題。 –

+0

其實我把代碼示例放在這裏時犯了一個錯誤。我的句子是與「那麼」。 –

+0

你能發佈你的規則的「源代碼」嗎? Guvnor有一個選項可以查看沒有DSL生成的DRL規則。 –

回答

3

的問題是不是與使用DSL的句子,但與使用'mvel'方言。看來Mvel不喜歡拋出異常語法。 解決方案是使用'java'方言代替。

爲了做到這一點,你必須在你的規則添加'java'方言選項:

enter image description here

不幸的是,據我記得,存在的Guvnor的全局設置爲默認使用'java'方言。