2017-04-13 7 views
0

우리는 whenthen을 가지고 있습니다. 조건이 충족되면 then 조건으로 이동하여 obj.setStatus("transaction success", "review required")과 같은 상태를 업데이트합니다."when"상태가 drools에서 실패했을 때 상태를 삽입하거나 업데이트하는 방법은 무엇입니까?

그러나 when 조건이 만족스럽지 않으면 obj.setStatus("transaction Failed", "review not required")을 업데이트하고 싶습니다.

Drools에서 어떻게 가능합니까?

답변

1

가장 좋은 방법은 obj.status를 "failed"로 초기화하는 것입니다. 모든 규칙이 실행 된 후에도이 상태 또는 업데이트 된 상태가 "성공"으로 표시됩니다. 하나의 규칙이 없습니다

rule "catch failures" 
salience -999999 
when 
    $obj: MyFact(status == null) // no initial value 
then 
    modify($obj){ setStatus("transaction Failed", "review not required") } 
end 
0

: 당신은 규칙 발생이 필요한 경우

, 당신은 수정되지 않은 사실을 잡기 규칙을 작성할 수 있습니다. 우리가 그렇게한다면 규칙 크기가 커질 것입니다.

//FailureMessage :- Equipment breakdown coverage size is greater than 0 

규칙 "CPP_ReviewLossControl" 규칙 플로우 그룹 "CPPReview" 잠금 - 온 - 활성 때 $ commPolicy : CommlPolicyInfoBean(); $ STPRulesResponseBean : STPRulesResponseBean(); $ lobInfo : $ commPolicy.getLobs()에서 LOBInfoBean ("CPP".equalsIgnoreCase (lob) & & losses.size()> = 3); 다음 System.out.println ("AMR에 대한 손실 내역 작업 만들기"); $ STPRulesResponseBean.getResultMap(). put ("CPP_ORD_LOSS_CNTRL", true); 끝

// FailureMessage :. - 비즈니스 카테고리 일반 프레임, 윈도우 나 윈도우 프레임, 치장 용 벽토 및/또는 벽돌/마른 벽에서 나온 계약자를 포함 EIFS 응용 프로그램이어야한다, 지붕, 외부 사이딩/물 교정/코킹, 기타 외부 마무리 작업.

규칙 "CPP_ReviewBusinessCategory" 규칙 플로우 그룹 "CPPReview" 잠금 - 온 - 활성 때 $ STPRulesResponseBean : STPRulesResponseBean(); $ commlPolicyInfoBean : CommlPolicyInfoBean(); $ lobInfo : $ commlPolicyInfoBean.getLobs()의 LOBInfoBean ("CPP". equalsIgnoreCase (lob)); AccountInfoBean) ($ commlPolicyInfoBean.getAccountInfo에서 (businessCategoryCode는 == "23"& & (primaryActivities 포함 ("23813") || primaryActivities 포함 ("23831") || primaryActivities)는 "23816"를 포함)를 System.out에 .println ("비즈니스 범주 만들기"); $ STPRulesResponseBean.getResultMap(). put ("CPP_REV_SPL_RISK", true); end

및 setFocus에도 있습니다.