2010-06-14 3 views
7

다음과 같이합니다.동적 의사 결정 테이블에 drools 전문가 사용

"규칙"을 데이터베이스 테이블에 넣고 싶습니다. 이것은 모든 규칙이 테이블의 행이된다는 점을 제외하고는 drools xls 의사 결정 테이블 형식과 같습니다. 이렇게하면 규칙을 쉽게 수정할 수 있습니다. 내 규칙이 자주 바뀔 수 있기 때문에 xls가 아닌 테이블에 넣어야합니다. 이것이 졸음과 가능한가? DB (DRL 또는 xls 파일 대신)에서 검색 한 규칙을 사용하여 지식 기반을 구축 할 수 있으며 규칙이 변경 될 때마다 처음부터 지식 기반을 다시 작성할 수 있습니까 (아니면 기술 자료의 일부만 변경하면 본질적으로 변경된 규칙 만 업데이트 할 수 있습니까). ..)

답변

6

당신이 염두에두고있는 규칙의 종류에 따라 다릅니다. 데이터베이스 기반 접근 방식은 구조가 동일하고 특정 '매개 변수'에 따라 달라지는 규칙이 많은 경우 의미가 있습니다. 이 경우 단일 일반 규칙을 작성하고 데이터베이스를 사용하여 적용되는 모든 조합을 저장할 수 있습니다. 예를 들어 주문에 대해 국가 별 배송비를 계산하는 규칙이 있다고 가정 해 보겠습니다. 각 CountryShippingRate 한 국가의 비율을 지정합니다

rule "Shipping rates to France" 
when 
    $order : Order(country == 'fr') 
then 
    $order.setShippingRate(10.0); 
    update(order); 
end 

// Similar rules for other countries… 

당신은 당신의 데이터베이스에서 이러한 규칙 데이터를 대체 할 수 있습니다. 그런 다음 같은 사실 규칙 세션에서 개체 및 단일 규칙으로 CountryShippingRate 모든 행 삽입 : 실제로

rule "Shipping rates" 
when 
    $order : Order($country : country) 
    CountryShippingRate($rate : rate, country == $country) 
then 
    $order.setShippingRate($rate); 
    update(order); 
end 

를, 그것은 의사 결정 테이블 유형 규칙의 많은이 방법을 다시 작성할 수 있습니다 것으로 나타났다.

+1

10 회 upvote 할 수 있으면 좋겠다. –

+0

@Peter Hilton이 질문을보십시오. 감사합니다 http://stackoverflow.com/questions/26322576/stop-rules-on-update-facts-drools – Kumar