该属性将若干个规则划分成一个组,统一命名。在执行的时候,具有相同activation-group 属性的规则中只要有一个被执行,其它的规则都不再执行。可以用类似salience之类属性来实现规则的执行优先级。该属性以前也被称为异或(Xor)组,但技术上并不是这样实现的,当提到此概念,知道是该属性即可。

实例代码:

package com.rules

 rule "test-activation-group1"
    activation-group "foo"
    when
    then
        System.out.println("test-activation-group1 被触发");
    end

rule "test-activation-group2"
    activation-group "foo"
    salience 1
    when
    then
        System.out.println("test-activation-group2 被触发");
    end

执行规则之后,打印结果:

test-activation-group2 被触发

以上实例证明,同一activation-group优先级高的被执行,其他规则不会再被执行。

dialect

该属性用来定义规则(LHS、RHS)当中要使用的语言类型,可选值为“java”或“mvel”。默认情况下使用java语言。当在包级别指定方言时,这个属性可以在具体的规则中覆盖掉包级别的指定。

dialect "mvel"



drools规则引擎属性之activation-group和dialect插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2019/08/19/drools%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e5%b1%9e%e6%80%a7%e4%b9%8bactivation-group%e5%92%8cdialect/