2016-06-06 2 views
0

각 사용자에 대해 일련의 규칙이 있습니다. 현재이 규칙은 파일에 설정되어 있습니다. 그러나 사용자가 규칙을 수정/추가 할 수있게하고 싶습니다. 규칙은 그렇게 복잡하지 않습니다.일반 사용자가 규칙 파일을 수정할 수 있도록 허용

rule "Rule 1" 
    when 
     $order : OrderInfo(getOrderDate() < new Date(...) 
    then 
     $order.setReturnEligibility(false); 
end 

rule "Rule 2" 
when 
    $item : ItemInfo(nonReturnableCategory.contains(getItemCategory().toLowerCase())) 
then 
    $item.setReturnEligibility(false); 
end 

rule "Rule 3" 
    when 
     $item : ItemInfo(isFinalSale()) 
    then 
     $item.setReturnMethod(...); 
end 

내가 워크 벤치를 Drools가 유사한 UI를 구축하려는 : 예를 들어, 아래의 규칙의 몇 가지 있습니다. 그러나 이것은 최종 고객을위한 것이므로 매우 단순하고 사용자 친화적 인 UI가되기를 바랍니다. 그리고 데이터베이스에 규칙을 저장하려고했습니다.

사용자가 새 규칙을 추가하고 기존 규칙을 수정하도록 허용하고 싶습니다. 예를 들어 위의 규칙 3을 사용할 수없는 경우 사용자는 UI에 드롭 다운을 표시하여 반환 할 수없는 항목 카테고리를 선택할 수 있습니다. 또는 규칙 등을 활성화 또는 비활성화 할 수 있습니다.

규칙을 유지하는 가장 좋은 방법은 무엇입니까? DB 전체에 rules 파일을 문자열로 저장하고 사용자가 규칙을 추가/업데이트 할 때 문자열을 수정해야합니까? 나는 Drools 6.2를 사용하고 있습니다. 나는 그 질문이 다소 모호하다는 것을 안다. 그러나 어떻게 시작해야하는지 모르겠다. 그래서 어떤 제안이라도 고맙게 받아 들여진다.

감사합니다.

+0

"최종 사용자"는 적어도 Java의 확실한 하위 집합을 알고 있습니까? 너 확실해? * – laune

답변

0

기존 규칙을 수정하면 제약 조건 만 "텍스트가있는 텍스트"로 변경된다는 의미입니다.

그러나 전체 DRL 파일을 DB 항목으로 저장하지 않습니다. 아마도 엔티티로 개별 규칙이 저장되는 시스템이 가장 효과적 일 것입니다. 속성은 이름, 텍스트, "선택되었습니다"속성 등이됩니다.

+0

제안 해 주셔서 감사합니다. 개별 규칙으로 개별 규칙을 저장하는 방법을 수행 할 계획입니다. 그러나 나는 성능에 관해서 또 다른 질문을한다. 나는 http://stackoverflow.com/questions/37671645/drools-concerns-about-performance-and-thread-safety에서 물었다. 그것에 대한 어떤 제안? – drunkenfist

관련 문제