在下面的代码中,我使用id
属性来区分两个对象($stp2
不是$stp1
)。我怎样才能在对象级中进行,而不是使用某些属性?
rule "multipleSTPSamePeriod"
when
$stp1 : SubjectTeacherPeriod( $id:id, $period:period)
$stp2 : SubjectTeacherPeriod(id>$id, period==$period)
答案 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 );