在我的drl文件中,我使用的是Umlauts或ß等德语字符。因此,在为Kie File System创建资源时,我使用重载的构造函数将编码设置为UTF-8。 但是,在插入的事实口号上触发规则后,似乎并未应用指定的编码。我插入事实,如果条件与该事实相符,则应将事实的Action1(字符串)属性修改为“Rückfrage”,并返回修改后的事实。但是,当我查看检索到的bean的Action1属性时,我看到的是“Rückfrage”而不是“Rückfrage”。我尝试了UTF-8和ISO-8859-1编码。有什么想法吗?
流口水7.13
KieSessionGenerator:
public KieSessionGenerator() {
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write(ResourceFactory.newClassPathResource(drlFile, "UTF-8"));
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
KieModule kieModule = kieBuilder.getKieModule();
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
kieSession = kieContainer.newKieSession();
}
DRL的摘录:
rule "813"
when
$bean : Bean(longDesc == "Infektion")
then
$bean.setAction1("Rückfrage");
end
插入事实:
public Bean lookupBean(Bean bean) {
kieSessionGenerator.getKieSession().insert(bean);
kieSessionGenerator.getKieSession().fireAllRules();
return bean;
}
答案 0 :(得分:0)
当然,这是编码问题,而不是Drools的问题。我怀疑drlFile没有以UTF-8编码保存到磁盘。您使用什么编辑器来编辑drlFile?找到一个可以显示文件实际编码的编辑器,或者在编辑器中将编码设置为UTF-8并覆盖文件。