Drools通过kmodule.xml配置无法加载Template模板问题咨询
Drools drt模板加载失败的排查及配置修正方案
1. pom.xml基础依赖配置
首先确保已引入全部必要依赖,且所有drools、kie相关依赖的版本完全一致,版本不兼容会直接导致资源加载失败:
<dependencies> <!-- kie核心API --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>你的drools统一版本号</version> </dependency> <!-- drools核心引擎 --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>你的drools统一版本号</version> </dependency> <!-- drt模板支持 --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-templates</artifactId> <version>你的drools统一版本号</version> </dependency> <!-- xls格式决策表支持 --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> <version>你的drools统一版本号</version> </dependency> <!-- 类路径kie资源扫描支持 --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId> <version>你的drools统一版本号</version> </dependency> </dependencies>
2. pom.xml资源过滤配置
如果maven开启了资源过滤,会篡改drt、xls这类文件的内容导致解析失败,需要单独关闭规则类文件的过滤:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/kmodule.xml</include> <include>**/*.drl</include> <include>**/*.drt</include> <include>**/*.xls</include> <include>**/*.xlsx</include> </includes> <!-- 规则类文件关闭过滤,避免内容被篡改 --> <filtering>false</filtering> </resource> <!-- 其他需要过滤的配置文件可单独新增resource节点配置 --> </resources> </build>
3. kmodule.xml配置修正
3.1 路径匹配问题
你当前配置的kbase packages="KieRule"会默认扫描类路径下KieRule目录的资源,而你的drt、xls放在kiedrl目录下,路径不匹配会导致找不到资源,两种修正方案二选一:
- 方案一:修改packages属性为通配符,扫描全类路径的规则资源:
<kbase packages="*"> <ruleTemplate dtable="kiedrl/template-data.xls" template="kiedrl/validate-schedule-minor.drt" row="3" col="2" /> <ksession name="templateRule" /> </kbase>
- 方案二:保持packages为
KieRule,将kiedrl目录整体移动到resources/KieRule路径下,同步修改ruleTemplate的路径为相对KieRule的路径。
3.2 放置位置校验
kmodule.xml必须放在src/main/resources/META-INF目录下,编译后对应出现在target/classes/META-INF路径,这是kie扫描配置的默认固定路径,放错位置会直接导致配置不生效。
4. 其他校验点
- 确认项目编译后,
target/classes目录下存在对应路径的validate-schedule-minor.drt和template-data.xls文件 - 确认xls文件的表头字段和模板占位符完全对应,数据起始行列和配置的
row="3" col="2"一致
内容的提问来源于stack exchange,提问作者Akhil kumar Amarneni
相关产品推荐
相关产品推荐

