我正在尝试将 slf4j Logger 对象作为全局传递给我的 Drools 规则。
在我的调用 Java 类中,我定义了记录器并通过 setGlobal kie 服务器命令将其传递给规则:
private static final Logger LOGGER = LoggerFactory.getLogger(KieServerTester.class);
Command<?> setGlobalCommand = commandsFactory.newSetGlobal("logger", LOGGER);
commands.add(setGlobalCommand);
在我的规则文件中,我将全局定义为:
global org.slf4j.Logger logger;
但是,当我执行命令时,出现此错误:
错误 [org.kie.server.services.drools.DroolsKieContainerCommandServiceImpl](默认任务 1)调用容器“mycontainer”时出错:java.lang.RuntimeException:全局的非法类。预期 [org.slf4j.Logger],找到 [java.util.LinkedHashMap]。
我不知道它是从哪里得到 LinkedHashMap 的。我已单步执行调用代码,但看不到地图出现的位置。
如果我将规则文件中的全局更改为 LinkedHashMap,我不会收到错误消息。所以不知何故,看起来我在 Java 类中的记录器对象正在转换为 LinkedHashMap。
任何帮助表示赞赏,谢谢。