Существует нет «импорта» для правил из одного DRL в другой DRL.
Что делать, чтобы решить вашу проблему, зависит от требуемой детализации выбора правил.
Если существует небольшое число N статических комбинаций, вы можете создать базы N правил и позволить пользователям выбрать базу правил. Это чистое, контролируемое и проверяемое.
Если есть количество disjoint комплектов, используйте группы целей. Пользователь выбирает группу повестки дня, и активны только правила в этой группе. (Если наборы не являются дизъюнктными, вы все равно можете использовать группы программ за счет дублирования правил с использованием разных названий для появления в разных группах участников. Ужасно, не рекомендуется.)
Для произвольного динамического выбора у вас будет разработать какой-то механизм. Например:
rule "rule1"
when
Select(name == "rule1")
All(...)
Original(...)
Patterns(...)
then ... end
Вставка нового Select ("rule1") выбирает, убирает ретракты. В зависимости от способа выбора должно быть сделано, вы можете также реализовать «особенность»:
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-файлы на основе бизнес-областей. –