首页 > 解决方案 > 在 Drools 中加载外部文件

问题描述

我是 drools 的新手,我已经使用 kmodule.xml 文件和/rules文件夹下的规则文件设置了我的应用程序。我将应用程序打包为 jar,一切正常。

我的用例虽然涉及在运行时生成新规则,所以生成了新文件 .gdst。所以我的问题是如何让我的 .jar 文件使用这些文件而不使用它们位于资源文件夹中,但在运行时从外部文件夹加载它们?谢谢

标签: droolskiedrools-guvnor

解决方案


您可以使用 Kie API 以编程方式定义 KieContainer - 这包括添加外部加载的规则。在高层次上,它可能如下所示:

KieFileSystem kfs = ...
kfs.write( "src/main/resources/KBase1/ruleSet1.drl", stringContainingAValidDRL )
    .write( "src/main/resources/dtable.xls",
            kieServices.getResources().newInputStreamResource( dtableFileStream ) );

请参阅包含说明此端到端单元测试的此类: https ://github.com/kiegroup/drools/blob/9e335b0ff3b04d30316a9b75fba090784d6967d7/drools-mvel/src/test/java/org/drools/mvel/compiler/builder /KieBuilderTest.java


推荐阅读