Drools中规则的多个端点

Drools中规则的多个端点,drools,drools-guvnor,drools-fusion,drools-flow,Drools,Drools Guvnor,Drools Fusion,Drools Flow,我完全不喜欢流口水,只是在探索。到目前为止,我只使用了一个规则,我们使用if条件,就像java一样 现在我不得不使用复杂的规则,在这里我需要使用多个if和else链,但当一系列条件中的一个满足时,就结束它 我叫阿帕奇骆驼的口水。这些规则应该回复到Camel 现在,当if和else条件之一失败时,如何打破规则链,然后将响应发送回调用方,这是驼峰代码 1.我可以使用多个结束语句进行回复吗 2.我会使用函数,我知道用java编写函数并导入 3.是否有可能在Drools中创建函数并像在java中一样使用

我完全不喜欢流口水,只是在探索。到目前为止,我只使用了一个规则,我们使用if条件,就像java一样

现在我不得不使用复杂的规则,在这里我需要使用多个if和else链,但当一系列条件中的一个满足时,就结束它

我叫阿帕奇骆驼的口水。这些规则应该回复到Camel

现在,当if和else条件之一失败时,如何打破规则链,然后将响应发送回调用方,这是驼峰代码

1.我可以使用多个结束语句进行回复吗

2.我会使用函数,我知道用java编写函数并导入

3.是否有可能在Drools中创建函数并像在java中一样使用

我并没有按照应该使用的方式使用Drools,但到目前为止,规则并没有我们现在使用的那么复杂。任何帮助对我都是有用的

这里有一个例子,我想使用请建议,如果下面的工作或其他一些类似下面的替代方案

rule "my rule"
when
#some condition

then

 if(){

 end

 }else if(){

 #do something

 }

 if(){

  #do some other logic

}
 end
我第二次评论后的示例

When

object:SomeObject(); // This helps for my camel code to trigger this rule and this rule only

then

if(){

}
else if()
{

return;
}else if() {
}

if(){

}else if(){
return;
}
if(){

}
end

我不知道你说的“打破一系列规则”是什么意思。当不再需要执行任何规则激活时,评估规则将自行结束

对1的答复3.:

  • 不,我不能把“回复”这个词与之联系起来,但也没有“一条规则的多个结束语句”

  • 是的,您可以使用静态Java函数:导入类,调用它,就像在Java中一样

  • 对。这在Drools手册的标题为“功能”的章节中进行了解释。本手册中的示例如下:

    函数字符串hello(字符串名称){ 返回“Hello”+name+“!”; }

  • 对问题后面添加的规则发表评论

    您不能在
    then
    和规则的实际
    end
    之间使用
    end
    。如果要终止规则的结果部分,请使用Java的
    return
    语句(当然不带表达式)

    重新考虑在结果中使用复杂的条件语句。逻辑决策应该用规则的条件部分表示

    很久以后由于可能存在Guvnor错误而采取的解决方法-不接受返回

    boolean skip = false;
    if(){
    } else 
    if() {
        skip = true; // return;
    } else 
    if() {
    }
    if( ! skip ){
        if(){
        } else
        if(){
            skip = true; // return;
        }
     }
    if( ! skip ){
        if (){
        }
    }
    

    结束

    谢谢你的回答。我看到了功能一。但是我想编写一个我现在在问题中添加的示例。你能证实这一点吗?@NaveenRaj在我的回答中添加了一条关于规则的评论。它说void方法不能返回值。你能帮我吗?看我的回答:“返回声明…没有表达”我只给出了“返回”;我没有表达就没有得到。。你是说在什么时候?请向我澄清。。