2014-02-19 2 views
0

Drools에서는 정의 된대로 DRL 파일에서 규칙을 결합 할 수 있습니까? 예를 들어 다음과 같은 두 가지 규칙이있는 경우 :Drools 전문가의 규칙 논리 결합

rule A 
// definition 
end 

rule B 
// definition 
end 

A 또는 B와 같은 논리를 구현하는 다른 규칙을 사용할 수 있습니까?

답변

0

두 개의 규칙 A와 B 이고 A 또는 B (xor가 아님)의 논리적 등가물입니다.

다른 규칙을 참조 할 수는 없지만 쿼리를 정의하고 동일한 LHS 조건 내에서 두 개 (또는 그 이상)의 쿼리를 호출 할 수 있습니다.

그러나 논리의 전반적인 패턴은 진실 유지 관리라고하는 파생 된 사실로 삽입하여 서로 다른 규칙의 일치가 확실한 방식으로 완전히 다른 접근 방식을 제안 할 수 있습니다.

rule A when ... then 
    insertLogical(new Fired("A")); 
end 
rule B when ... then 
    insertLogical(new Fired("B")); 
end 
rule AorB when 
    Fired(rule == "A" || rule == "B") // other patterns for other combinations, e.g. && 
then 
    ... 
end 

자세한 내용은 정확한 조언이 필요합니다.

+0

내 상황에서는 잘 작동합니다. 시스템의 상태를 모델링하려고합니다. 그래서 저는 Drools에게 규칙을 포착하고 시스템의 상태를 알리고 나중에 추론을 할 수 있습니다. –

0

하나의 규칙을 실행하고 다른 규칙을 취소하는 활성화 그룹을 볼 수도 있습니다.