0

我在drools中有多个规则包,每个包都包含不同的规则,我将所有包的规则添加到kmodule.xml文件中,一旦我运行我的一个bpmns(每个规则包都有不同的bpmn和规则流- grouo)所有规则都会被触发,即使是不同包和不同规则流组中的规则。我想创建多个 Kiebase,每个都包含相关的 drl 文件(还以编程方式和动态构建 kmodule,而不是通过将它们写入 meta-inf 文件夹),一旦我决定需要哪个,我会将 kiebase 添加到会话中并运行正确的 bpmn。我该如何实施?

4

2 回答 2

-1

也许这个片段可以激发您以自己的方式破解它:

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

    String someRules = getRulesFromSomewhere(); // find your rules text here...

    kbuilder.add(someRules, ResourceType.DRL);


    if (kbuilder.hasErrors()) {
        //in case of compiling errors
        for (KnowledgeBuilderError error : kbuilder.getErrors()) {
            LOG.error(error.toString());
        }
    }else{

        kSession = kbuilder.newKnowledgeBase().newStatelessKieSession();

        //use your stateless ksession here!
    }

在我的情况下,这些“someRules”来自一个数据库查询,该查询根据特定标准从一个表中获取所有规则。您可以轻松地使用这种代码根据不同的 os 规则集创建多个 kieSession。

于 2016-09-22T20:52:28.000 回答
-1

看看这个其他问题。在那里,您可以找到 2 种在 Java 中以编程方式创建 KieBases 的方法。

希望能帮助到你,

于 2016-09-12T15:54:34.983 回答