Как улучшить производительность правил слюни

У меня есть около 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 ответов

  1. Не используйте вызовы методов в блоке, больше.
  2. Распараллеливайте, а затем блокируйте выполнение, где это возможно
Другие вопросы по тегам