0

我有大约 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

提前致谢

4

1 回答 1

0
  1. 不要在阻塞时使用方法调用,更多
  2. 并行化然后在适用的情况下阻止执行。
于 2020-02-08T23:06:47.493 回答