Невозможно создать новое правило drools, ошибка: Ошибка компиляции правила: !!! превышает ограничение 65535 байт - PullRequest
0 голосов
/ 14 октября 2019

Я создал 1032 новых успешных правила. Когда я хотел создать 1033, произошла какая-то ошибка.

Я строил новые правила с помощью Builder Knowledge в 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

1 Ответ

0 голосов
/ 14 октября 2019

65535 - максимальный размер метода в java, и нет никакого способа обойти это. Вам нужно сделать ruleContent короче.

(возможно, разделить его на несколько вариантов? Не знаете, как работает Droos. Но "Rule_PROM_APPLYCHECKER_2103_G00002382191827255" определенно слишком большой.)

...