gpt4 book ai didi

java - 如何从 Drools 6.5 中的字符串加载规则

转载 作者:行者123 更新时间:2023-11-30 06:50:23 25 4
gpt4 key购买 nike

我有一组字符串形式的规则,它们作为参数传递给我的函数,该函数不存储在任何文件中。从我到目前为止读到的内容来看,6 之前的版本有很多解决方案,我猜测 API 非常不同。 (他们建议使用 KnowledgeBase,该库在 6.5 中已弃用)

这是我到目前为止的解决方案:

KieFileSystem kfs = kService.newKieFileSystem();
Resource drlResource = ResourceFactory.newByteArrayResource(rules.getBytes());
drlResource.setResourceType(ResourceType.DRL);
kfs.write(drlResource);
KieBuilder builder = kService.newKieBuilder(kfs).buildAll();

但是当我运行时,会抛出一个错误:

java.lang.RuntimeException: Resource does not have neither a source nor a target path. Impossible to add it to the bundle. Please set either the source or target name of the resource before adding it.ByteArrayResource[bytes=[105, 109, 112, 111, 114, 116, 32, 106, 97, 118, ...], encoding=null]
at org.drools.compiler.kie.builder.impl.KieFileSystemImpl.write(KieFileSystemImpl.java:95)

但是我这里没有源文件,如何将字符串转换为规则资源?

我使用的是 Drools 6.5.0.Final。

最佳答案

你可以使用这个:

String drl = "...";
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write( "src/main/resources/simple.drl",
kieServices.getResources().newReaderResource( new StringReader(drl) ) );
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();

它就在 Drools API 中 - 只需找到它即可。

编辑Javadoc 有一个索引,您可以在其中查找方法和类型名称。接口(interface)是

org.kie.api.KieServices 
org.kie.api.builder.KieFileSystem
org.kie.api.io.KieResources
org.kie.api.io.Resource

Javadoc:“KieFileSystem 是一个内存文件系统,用于...”要了解它的工作原理,请查看源代码。

关于java - 如何从 Drools 6.5 中的字符串加载规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com