Как мы можем разделить отдельные правила между файлами.drl в Правилах JBoss?
Мы используем JBoss Rules (он же Drools) и имеем несколько файлов .drl, каждый из которых содержит несколько правил. Есть ли способ избежать дублирования между файлами, чтобы мы могли определить общие правила, доступные для нескольких файлов .drl?
К сожалению, похоже, что нет никаких включений или модулей.
1 ответ
Решение
Невозможно включить правила из другого файла.drl в файл.drl.
Однако вы можете добавить два файла.drl к одной базе правил, и они будут работать так, как если бы они находились в одном файле.
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "common.drl" ) ) );
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "rules1.drl" ) ) );
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( builder.getPackage() );