Java Drools DSL自定义扩展器
有dsl.DefaultExpander和dsl.DefaultExpanderResolver。Design和javadoc提供了一个想法,我可以将自定义扩展器添加到流中。但我并没有发现真正的可能性。您知道如何使用自定义扩展器实现DSL解析吗?在用于编译DRL/DSL的类中,我看到了以下方法:Java Drools DSL自定义扩展器,java,drools,Java,Drools,有dsl.DefaultExpander和dsl.DefaultExpanderResolver。Design和javadoc提供了一个想法,我可以将自定义扩展器添加到流中。但我并没有发现真正的可能性。您知道如何使用自定义扩展器实现DSL解析吗?在用于编译DRL/DSL的类中,我看到了以下方法: public DefaultExpander getDslExpander() { DefaultExpander expander = new DefaultExpander(); i
public DefaultExpander getDslExpander() {
DefaultExpander expander = new DefaultExpander();
if (this.dslFiles == null || this.dslFiles.isEmpty()) {
return null;
}
for (DSLMappingFile file : this.dslFiles) {
expander.addDSLMapping(file.getMapping());
}
return expander;
}
如您所见,DefaultExpander是硬编码的,所以我想没有办法指定任何其他实现
同样的事情发生在DefaultExpanderResolver总是被实例化的情况下,不管发生什么
在我看来,唯一的方法是根据自己的语义在Drools外部预先生成DRL,然后将生成的DRL提供给Drools
希望有帮助,谢谢您的回复,我看到了这个片段。希望这能被克服。DSL到DRL的转换只需要一些扩展。因此,如果您愿意编写自己的扩展器,就不需要其他任何东西。您的扩展器创建DRL,并将其传递给DRL编译器:就是这样。我们应该与Business Central集成,用户应该在DSL中有规则,因此BC的扩展器可以工作。最好有几个现有的调试键来更改扩展器的实现。