Drools Guvnor中引发异常(引导编辑器规则)

Drools Guvnor中引发异常(引导编辑器规则),drools,drools-guvnor,guvnor,Drools,Drools Guvnor,Guvnor,我正在使用Guvnor构建一个规则项目。在我的一个DSL中,我对错误操作有以下“结果”陈述: [when]错误“{message}”=抛出新异常(“{message}”) 如果我使用DSL规则,用DSL语句编写所有规则,那么它工作得非常完美。但是,使用向导编辑器,这不起作用,验证会这样说: [错误:无法使用严格模式解析方法:org.drools.spi.KnowledgeHelper.throw()][靠近:{…抛出新异常(…) 有人知道我需要为此做些什么吗?这很重要,因为我的项目将被非It人员

我正在使用Guvnor构建一个规则项目。在我的一个DSL中,我对错误操作有以下“结果”陈述:

[when]错误“{message}”=抛出新异常(“{message}”)

如果我使用DSL规则,用DSL语句编写所有规则,那么它工作得非常完美。但是,使用向导编辑器,这不起作用,验证会这样说:

[错误:无法使用严格模式解析方法:org.drools.spi.KnowledgeHelper.throw()][靠近:{…抛出新异常(
…)

有人知道我需要为此做些什么吗?这很重要,因为我的项目将被非It人员使用

谢谢


引导编辑器生成的源代码非常简单:

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

问题不在于DSL语句的使用,而在于
'mvel'
方言的使用。mvel似乎不喜欢抛出异常语法。 解决方法是使用
'java'
方言

为此,您必须在规则中添加
'java'
方言选项:


不幸的是,据我所知,Guvnor中没有默认使用
'java'
方言的全局设置。

问题不在于使用DSL语句,而在于使用
'mvel'
方言。mvel似乎不喜欢抛出异常语法。 解决方法是使用
'java'
方言

为此,您必须在规则中添加
'java'
方言选项:


不幸的是,据我所知,Guvnor中没有默认使用
'java'
方言的全局设置。

只有一条注释:您确定您的DSL以
[when]
开始,而不是以
[then]开始吗
?否则,向导编辑器将只允许您在规则的LHS中使用该DSL语句,这将是一个问题。实际上,我在将代码示例放在这里时犯了一个错误。我的语句是“then”。您可以发布“源代码”吗“关于您的规则?Guvnor中有一个选项可以查看生成的DRL规则而不使用DSL。是的,我在原始消息中添加了源代码。感谢您的关注。只需一条注释:您确定您的DSL以
[when]
开始,而不是以
[then]开始吗?”
?否则,向导编辑器将只允许您在规则的LHS中使用该DSL语句,这将是一个问题。实际上,我在将代码示例放在这里时犯了一个错误。我的语句是“then”。您可以发布“源代码”吗您的规则?Guvnor中有一个选项,可以查看生成的不带DSL的DRL规则。是的,我在原始消息中添加了源代码。感谢您的关注。