2014-04-11 1 views
1

내 프로젝트에 Drools 규칙을 구현 하려다가 if-else을 졸다 규칙으로 변환하려고하는데, else 상태를 졸음에 넣는 방법을 모르겠습니다. 내 시나리오는 다음과 같이이다 : DRL 파일의Drools의 다른 조건

if(value.equals("java.lang.Integer")) { 
    //Put value into pojo 
} else if(value.equals("java.lang.Float")) { 

} 
// Similar if-else for other data type 
else { 
    //Do some action (if it doesn't satisfy all other condition) 
} 

내 현재 내용이 같다 :

rule "When Method Parameter is java.lang.Integer" 
    when 
     object.getValue().eqals("java.lang.Integer") 
    then 
     #Set value to another pojo 
end 

rule "When Method Parameter is java.lang.Float" 
    when 
     object.getValue().eqals("java.lang.Float") 
    then 
     #Set value to another pojo 
end 

rule "Rules if all of the above condition fails" 
    # is it possible to have rule just like else, if all 
    # of above condition fails, this rule should execute 
end 

가 지금은 위의 조건을 모두 실패 할 경우 실행해야 실행 조건을합니다. 이것은 졸음을 사용하여 이것을 가능합니까? 위의 조건이 모두 실패하면 나머지 부분을 실행해야합니다. 검색을 시도한 결과 현재 누적이 else 조건을 지원하지 않음을 알았습니다. 이 경우 시나리오 유형을 어떻게 구현합니까? 나는 졸졸 초보자 이래로 나를 안내 해주실 수 있습니까?

답변

0

가장 가까운 모델은 아마도 활성화 그룹 일 것입니다. 활성 그룹에서는 해당 그룹 내의 하나의 규칙 만 실행됩니다. 따라서 값을 제한하지 않는 낮은 중요도를 가진 추가 규칙을 작성하면 그룹의 다른 규칙이 실행되지 않으면 실행되지 않습니다.

다른 규칙에 사용 된 패턴의 부정에 일치하는 규칙을 만들 수도 있고, RHS에 if-then-else와 함께 하나의 규칙 만 가질 수도 있습니다. 당신은 '순수한'느낌이 들지 않기 때문에 그 마지막 것을 지배해서는 안됩니다. 상황에 따라 가장 간단한 방법 일 수도 있습니다.

1

나는 "분류"라고 부르는 디자인 패턴에 변화가 있습니다. 디자인 패턴에 대한 저서보기 https://engage.redhat.com/forms/rule-design-patterns

규칙은 당신이 보았 듯이 문법적으로 절대적으로 부정확하므로 실제로 수행해야 할 작업을 모른 채 권장 사항을 제공하고 싶지 않습니다. 몇 가지 옵션을 생각해 볼 수 있습니다. 심지어 몇 가지 규칙까지 적용됩니다.

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 나는 규칙을 복사했고 그것은 구문 상으로 정확합니다. 하지만 그냥 다른 부분을 처리하는 방법을 알고 찾고 :) –

+0

좋은 종이 btw. – zenbeni