对于我的Java作业,我使用Drools 5.x (drools-编译器5.2.1.Final、drools-决策表5.4.0.Final和drools-模板5.4.0.Final;jbpm-flow 5.1.Final、jbpm-bmpn25.1.Final及其各自的依赖项)。我现在的装置正常工作。我正在使用决策表(电子表格)。
如前所述,我能够使用drools 5.x使用Java 1.8.0_162构建/运行我的项目;但是,当java作业运行时,它加载决策表(电子表格),但它不会触发任何规则,在最后一行中不会得到执行的异常:
Properties props = new Properties();
KnowledgeBuilderConfiguration configuration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(props);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newDecisionTableConfiguration(configuration);
DecisionTableConfiguration config = KnowledgeBuilderFactory.newDecisionTableConfiguration();
config.setInputType(DecisionTableInputType.XLS);
kbuilder.add(ResourceFactory.newClassPathResource(spreadsheetFile), ResourcType.DTABLE, config); // last line executed and then job exists and completes successfully.在执行最后一行之前,我放置了一些调试日志,它们显示了以下内容:
属性(道具):{} org.drools.compiler.PackageBuilderConfiguration@630cb4a4 (配置):KnowledgeBuilderConfiguration org.drools.builder.impl.KnowledgeBuilderImpl@239bof9d (kbuilder):KnowledgeBuilder ResourceFactory.newClassPathResource(spreadsheetFile):ClassPathResource path=‘ClassPathResource Sheet.xls’ ResourceType.DTABLE: ResourceType =“决策表” org.drools.builder.conf.impl.DecisionTableConfigurationImpl@150ab4ed ( DecisionTableConfiguration (Config)) DecisionTableConfiguration (config.getInputType()):XLS
因此,我决定从drools 5.5.0升级到7.5.0,并使用kie-api/ KIE -ci;我不得不进行一些重构,因为drools现在是KIE(知识就是一切)伞的一部分,参见下面的代码:
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer();
KieSession ks = kc.newKieSession("ksession-dtables"); //stateful session
FactHandle fh = ks.insert(fact);
ks.fireAllRules();……
包和规则被加载到知识库中,但是只有第一个规则启动,然后停止,我是否需要升级我的决策表(电子表格)才能使用Java 8处理drools 7.5.0?
欢迎任何建议。
谢谢!!
发布于 2018-06-14 16:41:02
我开始使用drools 6.5.0,现在一切都正常了。
https://stackoverflow.com/questions/50511357
复制相似问题