【发布时间】:2023-03-11 06:35:01
【问题描述】:
我有一组字符串形式的规则,它们作为参数传递给我的函数,它不存储在任何文件中。从我目前阅读的内容来看,对于 6 之前的版本,有很多解决方案,我猜 API 是非常不同的。 (他们建议使用 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)
但是我这里没有源文件,如何将String转换为规则资源?
我正在使用 Drools 6.5.0.Final。
【问题讨论】: