2017-11-03 1 views
0

Drools가 5, 방언 MVEL의 null내가 어떤 MappingFile 객체가 존재하고 경우에만 이유 코드로 BLuReport 객체가 NULL 인 경우에만 일치하도록이 규칙을 싶습니다</p> <p>Drools가 5

어떻게 비교 표현 ... 내가 성공하지 않고 몇 가지를 시도 것을 쓸 수있다 : I 업데이트 후 무한 루프를 얻고 유지하기 때문에

rule "Mapping.Control Group to BlueReport" 
    when 
     $internalAccount : MappingFile($mappingControlGroup : controlGroup) 
     $blueReport : BlueReport(**$Reason is null** : Reason) 
    then 
     System.out.println("Updating BlueReport.controlGroup from MappingFile.controlGroup" + " Rule=" + drools.getRule().getName()); 
     modify ($blueReport) { 
      setControl_group($mappingControlGroup), 
      setReason("Found mapping in the Internal Account object with account_id=" + $internalAccount.getExternalKey()); 
     } 
     retract ($blueReport) 
    end 

또한, 나는 후퇴 (BR)를 추가했다 ... 내가 업데이트를 제대로하고 있니?! BlueReport 필드가 정말 Reason (자바 명명 규칙에 반하는를)라는 이름의 경우

답변

0

는 당신은 단순히 쓰기 :

rule "Mapping.Control Group to BlueReport" 
when 
    $internalAccount : MappingFile($mappingControlGroup : controlGroup) 
    $blueReport : BlueReport(Reason == null) # or reason? 
then 
    System.out.println("Updating BlueReport.controlGroup from MappingFile.controlGroup" + " Rule=" + drools.getRule().getName()); 
    modify ($blueReport) { 
     setControl_group($mappingControlGroup), 
     setReason("Found mapping in the Internal Account object with account_id=" + $internalAccount.getExternalKey()); 
    } 
    retract ($blueReport); 
end 

은 아마 당신은 또한 제약 control_group != $mappingControlGroup이 있어야합니다.

이러한 제약 조건 중 하나를 사용하면 반복을 피할 수 있습니다.

+0

감사합니다. - 완벽하게 작동합니다. – JamesD

관련 문제