java - Java 8、Drools 5.x 和 Drools 7.x
问题描述
我正在使用 Drools 5.x(drools-compiler 5.2.1.Final、drools-decisiontables 5.4.0.Final 和 drools-templates 5.4.0.Final;jbpm-flow 5.1.1.Final、jbpm-bmpn2 5.1。 1.Final 及其各自的依赖项)对于我的 Java 工作,我使用 Java 1.7.0_21 构建/运行它。我目前的设置工作正常。我正在使用决策表(电子表格)。
如上所述,我可以使用 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.
在执行最后一行之前,我放置了一些调试日志,它们显示以下内容:
属性(道具):{}
KnowledgeBuilderConfiguration(配置):org.drools.compiler.PackageBuilderConfiguration@630cb4a4
知识构建器(kbuilder):org.drools.builder.impl.KnowledgeBuilderImpl@239bof9d
ResourceFactory.newClassPathResource(spreadsheetFile): [ClassPathResource path='spreadsheet.xls']
ResourceType.DTABLE: ResourceType = '决策表'
决策表配置(配置):org.drools.builder.conf.impl.DecisionTableConfigurationImpl@150ab4ed
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?
欢迎任何建议。
谢谢!!
解决方案
我开始使用 drools 6.5.0,现在一切正常。
推荐阅读
- haskell - 在 Haskell 中编写一个返回名称列表的函数?
- eclipse - Eclipse Launch Group - 启动模式如何工作?
- javascript - JQuery div clone changes ids but javascript slider function not refreshing
- python-3.x - 我用 geopandas 创建的列在 ArcGIS 或 QGIS 中不可见
- android - 如何微调弹出背景颜色更改
- python - Pandas dataframe yielding float and no float at the same time
- vb.net - 如何执行在文本框中输入的 VB 代码
- java - ShEx 验证 - 结果形状图中的原因和 appInfo 为空
- laravel - 如何创建 Laravel api 路由端点/查询参数?
- matplotlib - 用名称替换 xticks