java - 无法构建新的 drools 规则,错误 : Rule Compilation error : ! !!超出 65535 字节限制

标签 java drools

我已经创建了 1032 条新的成功规则。当我想创建 1033 时出现了一些错误。

我正在使用 Drools 中的知识构建器构建新规则。这是我的代码

public KnowledgeBuilder buildRules(String ruleContent){
        KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        knowledgeBuilder.add(ResourceFactory.newInputStreamResource(new ByteArrayInputStream(ruleContent.getBytes())),
                ResourceType.DRL);

        // check the builder for errors
        if (knowledgeBuilder.hasErrors()) {
            LOGGER.error(knowledgeBuilder.getErrors().toString());
            throw new RuntimeException("Unable to build new drools rule, error: " + knowledgeBuilder.getErrors());
        }

        return knowledgeBuilder;
    }

我预计创建 1033 条规则。 (已成功完成1032条规则) 但我得到一个错误输出:

Unable to build new drools rule, error: Rule Compilation error : [Rule name='PROM_APPLYCHECKER_2103_G00002382']
    com/indolotte/drools/pm/Rule_PROM_APPLYCHECKER_2103_G00002382191827255.java (6:877) : The code of method defaultConsequence(KnowledgeHelper, OptimizerOrderReqEVO, FactHandle)
is exceeding the 65535 bytes limit

最佳答案

65535 是 java 中方法的最大大小,没有办法绕过它。您需要缩短 ruleContent 的长度。

(也许将其分成多个?不熟悉 Droos 的工作原理。但是“Rule_PROM_APPLYCHECKER_2103_G00002382191827255”绝对太大了。)

关于java - 无法构建新的 drools 规则,错误 : Rule Compilation error : ! !!超出 65535 字节限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58371852/

相关文章:

java - 高负载场景下DatabaseAccessor未连接

java - Apache 光束 : cannot access Pub/Sub Emulator via docker-compose

java - 按下 JComponent 时触发 MouseListener,即使它是由 AffineTransform 转换的

java - 查找 ArrayList 中左右所有元素之和相等的索引

drools - 使用带有动态决策表的drools专家

java - Optaplanner 列出规划变量

java - JBoss 通过传递键来检查 HashMap 的值

java - 有没有什么简单的方法来执行所有的 .目录下的drl文件

java - 如何从 NetBeans 中的 Javadoc 中排除特定包?

java - Drools 决策表对象比较给出了相反的结果