0

Drools Expert 6.0.0.Beta3 (最新版はダウンロード ページで入手可能) を使用しており、ワーキング メモリに存在するルールを更新しようとしています。基本的に、次のように kBuilder の add() を再度呼び出しています。

kBuilder.add(org.drools.io.ResourceFactory.newByteArrayResource(drl.getBytes()),
            org.drools.builder.ResourceType.DRL);

ルールを最初に追加すると、ルールが追加され、条件が満たされたときにトリガーされます。ただし、上記のように add() を再度呼び出すと、次の例外が発生します。

java.lang.NullPointerException
    at org.drools.compiler.compiler.PackageBuilder.validateUniqueRuleNames(PackageBuilder.java:1314)
    at org.drools.compiler.compiler.PackageBuilder.initPackageRegistry(PackageBuilder.java:916)
    at org.drools.compiler.compiler.PackageBuilder.addPackage(PackageBuilder.java:869)
    at org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:474)
    at org.drools.compiler.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:670)
    at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
    at org.drools.compiler.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
    at org.drools.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:34)
    ...
4

1 に答える 1

1

同じ DRL を KnowledgeBuilder に 2 回追加しようとすると、KnowledgeBase に同じルールが 2 回含まれることになるため、何か問題があります。正直なところ、なぜあなたがこれを試みているのか知りたいです。

とにかく、NPE ではなく重複したルール名を報告するコンパイルの問題が発生するはずです。これは間違いなく私がここで報告したバグであり、すでにマスターで修正されています。

これを見つけてくれてありがとう。

于 2013-06-26T10:51:22.093 に答える