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

时间:2012-02-25 10:24:20

标签: drools

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

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $id:id, $period:period)
        $stp2 : SubjectTeacherPeriod(id>$id, period==$period)

1 个答案:

答案 0 :(得分:1)

您可以使用“this”特殊属性:

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $period:period )
        $stp2 : SubjectTeacherPeriod( this != $stp1, period==$period)

如果您希望在所有规则上使用该行为,则可以设置知识库配置选项,引擎将自动为您检查,而无需将约束添加到每个模式。

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

drools.removeIdentities = <true|false>

或使用API​​:

KnowledgeBaseConfiguration conf = ...
conf.setOption( RemoveIdentitiesOption.YES );