2016-12-04 4 views
1

Ich muss eine Regel auslösen, wenn eine Sammlung kein bestimmtes Objekt hat.Drools existiert nicht in der Sammlung

AuditAssignment ist als Problem verfügbar.

AuditAssignment hat eine Eigenschaft "requiredSkill"

Prüfungsauftrag eine Eigenschaft "Betriebsprüfer"

Auditor Objekt hat eine Liste von "Qualifikationen" hat, die eine Sammlung von "requiredSkill" ist

Jetzt, Ich muss überprüfen, ob die Qualifikationen des Auditors in der Auditassignment Objekt hat die erforderlicheSkill

Unten ist Beispielregel, die ich versuchte, aber nicht funktioniert.

rule "checkIfAuditSkillIsMatching" 
    when 
     $auditAssignment : AuditAssignment($neededSkill : requiredSkill.getSkillCode()) 

     $auditor : Auditor($auditorSkills : qualifications) 
     not exists (Skill (skillCode == $neededSkill) from $auditorSkills ) 

    then 
     System.out.println(" **** " + $neededSkill); 
     scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

Ich habe die unten ein und versucht

rule "checkIfAuditSkillIsMatching" 
    when 

     $validAuditorCount : Number (intValue < 1 ) from accumulate (
      $auditor : Auditor($auditorSkills: qualifications) 
      and exists AuditAssignment(auditor == $auditor , 
        $auditorSkills.contains(requiredSkill)) , 
      count($auditor) 

     ) 

    then 
     scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

Antwort

0

Die unter Konfiguration arbeitete

rule "checkIfAuditSkillIsMatching" 
    when 
     $auditAssignment : AuditAssignment($neededSkill : requiredSkill , 
        $assignedAuditor : auditor) 

     $auditor : Auditor(this == $assignedAuditor , !qualifications.contains($neededSkill)) 

    then 
     scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 
2

Hier ist es ratsam, eine Eigenschaft Methode der Sammlung zu verwenden, um den logischen Wert zu erhalten, die Sie benötigen.

rule "checkIfAuditSkillIsMatching" 
when 
    $auditAssignment: AuditAssignment($neededSkill: requiredSkill.getSkillCode()) 
    $auditor: Auditor($auditorSkills: qualifications, 
         ! $auditorSkills.contains($neededSkill)) 
then 
    //...no suitably qualified auditor 
end 
+0

Dank. werde das ausprobieren. – lives

+0

Entschuldigung - Ich habe das Problem nicht richtig angegeben. Ich habe das Problem umformuliert – lives

Verwandte Themen