Drools 选择两个不同对象的更好方法

Drools 选择两个不同对象的更好方法,drools,Drools,在下面的代码中,我使用id属性来区分两个对象($stp2不是$stp1)。我怎样才能在对象级别而不是使用某些属性呢 rule "multipleSTPSamePeriod" when $stp1 : SubjectTeacherPeriod( $id:id, $period:period) $stp2 : SubjectTeacherPeriod(id>$id, period==$period) 您可以使用“this”特殊属性: rule "mul

在下面的代码中,我使用
id
属性来区分两个对象(
$stp2
不是
$stp1
)。我怎样才能在对象级别而不是使用某些属性呢

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $id:id, $period:period)
        $stp2 : SubjectTeacherPeriod(id>$id, period==$period)
您可以使用“this”特殊属性:

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $period:period )
        $stp2 : SubjectTeacherPeriod( this != $stp1, period==$period)
但是,如果您希望在所有规则上都有这种行为,可以设置一个知识库配置选项,引擎将自动为您检查,而无需向每个模式添加约束

使用系统属性或conf文件,您可以设置:

drools.removeIdentities = <true|false>
您可以使用“this”特殊属性:

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $period:period )
        $stp2 : SubjectTeacherPeriod( this != $stp1, period==$period)
但是,如果您希望在所有规则上都有这种行为,可以设置一个知识库配置选项,引擎将自动为您检查,而无需向每个模式添加约束

使用系统属性或conf文件,您可以设置:

drools.removeIdentities = <true|false>