java - Drools 规则中的运算符优先级

标签 java drools jbpm mvel

您好,我想知道在 Drools 中如何解释以下规则

rule "test"
when
    condiction A
    or
    condiction B
    condiction C
then something
end

是吗

  1. (A 或 B)和 C

  2. A 或(B 和 C)

  3. 变成两条规则:a)。 A 和 C b). B和C

  4. 变成两条规则:a)。乙)。 B和C

谢谢

最佳答案

Drools 中的运算符优先级(很大程度上)遵循 Java 运算符优先级。 And (&) 在 or (|) 之前评估,后者在 之前评估逻辑与 (&&),在逻辑或 (||) 之前计算。

Operator precedence ---->

&    |    &&    ||

Note that Drools does support explicit operand grouping with parentheses, so when in doubt use them. As is, in your example the evaluation order corresponds to #2:

A or (B and C)

This ordering is then compiled into two rules, based off the groupings:

A
B and C

随后可能会激活这些规则中的任何一个,具体取决于您的型号。

所有这些都在高度推荐的 Drools documentation 中进行了解释。 .

关于java - Drools 规则中的运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13913469/

相关文章:

java - 为什么使用规则引擎而不是易于理解的一行属性?

drools - 如何迭代 drools 文件中的 List<HashMap> 并更新 Hash Map 对象并返回更新后的 List

java - Jbpm 使用 Java 查找任务

java - 将 java 查询结果传递给 fields/UCanAccess 兼容性

java - 如何使用 VisualVM 获取方法的总时间

java - 流口水:限时规则

java - 如何部署具有多个 ProcessDefinition.xml 文件的 jbpm 项目?

java - Catalina.out 中的错误 "org.apache.catalina.realm.CombinedRealm startInterna"

java - 在一次采访中有人问我如何检测 Java 中的内存泄漏?

java - jbpm-6.2.0-SNAPSHOT 安装失败