在 Workbench 与 kie-server 搭建及使用 一文中,我们介绍了如何快速地搭建 Workbench 及 kie-server 服务。但如果尝试过该方法的同学应该会发现一个问题,中文的规则怎么就匹配不成功呢?这也许会让很多学习 Drools 的小伙伴头疼,毕竟 Drools 的中文资料太少,并没有什么可以参考的标准。
踩坑实录
下面我来分享一下我解决这个问题的一个思路。
首先,既然是中文相关的问题,肯定和编码有关,首先想到的就是 Workbench 里面存储的规则文件的编码是不是有什么问题。既然有了想法那我们就去验证一下,在 Workbench 里面规则是使用 git 进行管理的,那我们将 Workbench 里面的项目 clone 到本地看看,命令十分简单,在 workbench 里面,8001 默认会作为 Git 仓库的端口:
git clone ssh://admin@localhost:8001/myrepo
在 clone 的过程中可能会遇到这么一个问题,提示信息为:
Unable to negotiate with 127.0.0.1 port 8001: no matching host key type found. Their offer: ssh-dss
fatal: Could not read from remote repository.
这是因为最新版本的 openssh 默认不推荐使用 DSA 密钥,只需要修改 ~/.ssh/config
,加上如下内容即可:
Host ${your-host}
HostkeyAlgorithms +ssh-dss
其中,${your-host} 需要替换成你安装 Workbench 服务器的主机地址,这里我使用 localhost,想偷懒的话,可以直接设置成 * 号。
项目复制完成之后,来检测一下规则文件的编码,Oh,My God!!!都是 utf-8,怎么就这么正常呢?
小小地失落那么一下后,继续前行。既然规则文件没有问题,那读取规则文件的地方有没有问题呢?Drools 会不会在加载规则文件的时候指定了什么编码?又需要开始进一步地验证了&#x