2012-02-25 5 views
1

Dans mon code ci-dessous, j'utilise la propriété id pour distinguer deux objets ($stp2 n'est pas $stp1). Comment puis-je plutôt le faire au au niveau de l'objet, au lieu d'utiliser une propriété?Meilleure façon de sélectionner deux objets distincts

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

Répondre

1

Vous pouvez utiliser le « cette » propriété spéciale:

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

Si vous voulez que le comportement sur toutes vos règles, cependant, vous pouvez définir une option de configuration de base de connaissances et le moteur automatiquement vérifier cela pour vous sans avoir besoin d'ajouter la contrainte à chaque modèle.

Utilisation d'un fichier propriété système ou vous pouvez définir conf:

drools.removeIdentities = <true|false> 

Ou en utilisant l'API:

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