Как улучшить производительность правил слюни
У меня есть около 50 файлов правил, которые создаются из файлов XSL. В каждом файле drl у меня есть около 500 правил. Каждое правило похоже на поиск строки, которая содержит, начинается или заканчивается определенной строкой. В настоящее время у нас есть только одна база знаний, в которую загружены все правила. Выполняемые в настоящее время правила являются для нас ударом по производительности, занимающим большую часть нашего времени выполнения. Будут тысячи запросов, которые будут попадать в сервис в секунду, небольшое улучшение производительности принесет нам пользу. Есть ли способ повысить производительность. Я думал только об одном: создать разные базы знаний для каждого набора правил и вызывать их. Это правильный способ сделать это или у нас есть какой-либо другой лучший способ оптимизации правил.
Пример правила:
rule "StampingRules_26"
salience 200000
when
$map : Map(UTILITY.supportsDirectoryType($map,'PCM'),
UTILITY.supportsDirectory($map,'CMMSCPE'),
! UTILITY.exitAllRules($map),
! executed,
UTILITY.applicable($map,'resellerName'),
UTILITY.setRuleLevel($map,'resellerCountry'),
UTILITY.checkRuleLevel($map,'US'),
UTILITY.startsWith ($map, 'Advent System~~AdventSystem'))
then
((Map)$map.get('PARAMETERS')).put('replaceParameter','csd_id');
String replaceParameter='csd_id';
((Map)$map.get('PARAMETERS')).put(replaceParameter, '001d000001Fsm72AAB');
((RulesUtility)$map.get('UTILITY')).setExitAllRules($map,'yes');
end
заранее спасибо
0 ответов
- Не используйте вызовы методов в блоке, больше.
- Распараллеливайте, а затем блокируйте выполнение, где это возможно