하나의 DRL에서 다른 DRL로 규칙에 대한 "가져 오기"가 없습니다.
문제점을 해결하기 위해 수행해야 할 작업은 규칙 선택에 필요한 세분성에 따라 다릅니다.
N 개의 정적 조합이있는 경우 N 개의 룰베이스를 빌드하고 사용자가 룰베이스를 선택할 수있게 할 수 있습니다. 이것은 깨끗하고 통제되고 테스트 할 수 있습니다.
세트 수가 서로 다른 경우 집합 의제 그룹을 사용하십시오. 사용자가 의제 그룹을 선택하면 해당 그룹의 규칙 만 활성화됩니다. (세트가 분리되어 있지 않은 경우, 다른 의제 그룹에서 다른 이름을 사용하여 규칙을 복제하는 대신에 의제 그룹을 계속 사용할 수 있습니다. 좋지 않은데, 좋지 않습니다.)
임의의 동적 선택의 경우, 어떤 메커니즘을 고안해야한다. 예 :
rule "rule1"
when
Select(name == "rule1")
All(...)
Original(...)
Patterns(...)
then ... end
새 선택 삽입 ("규칙 1")은 철회를 취소합니다. 방법의 선택에 따라하는 것은, 당신은 또한 "기능"을 구현할 수 있습니다되어야한다 :
rule "rule x" # part of feature f1 and f2
when
Select(featureSet contains Feature.f1 || Feature.f2)
All(...)
Original(...)
Patterns(...)
then ... end
당신은 기능의 조합을 확인하는 규칙을 작성할 수 있습니다
, 예를 들어,
rule "feature check"
when
Select(featureSet contains Feature.black && Feature.white)
then
... cant have black *and* white at the same time ...
end
왜 "하나의 파일에 100 개의 규칙이 없으면 효과적입니까?" 100 개의 규칙은 그리 많지 않습니다. – laune
모든 규칙은 하나의 파일에 집중되어 있으며 관련이 없습니다. 이러한 규칙을 비즈니스 영역을 기반으로하는 다른 .drl 파일로 분리하고 싶습니다. –