中文乱码主要表现在绘制模型,部署流程定义的时候出现乱码。一开始尝试通过配置文件来解决乱码问题,工程下有一个activiti-custom-context.xml(话说这个好像是5.17版本才有的,配置文件变化还挺大的),按官方说法,是作为自定义配置用的,里面有注释起来的demo,尝试添加配置如下所示:
通过属性注入方式修改字体。ProcessEngineConfiguration源码中存在两个属性字段:
protected String activityFontName = "Arial";
protected String labelFontName = "Arial";
启动tomcat,一开始用tomcat6 ,发现启动都失败了,后来网上有人说要用tomcat7,果断换上tomcat7,启动,没报错,不过还是没解决中文乱码问题
。
然后尝试了此方法:http://www.mossle.com/ask/question.do?id=3 ,还是不行
,可能是针对5.17之前的版本有效吧,还是我哪里操作不对了?放弃再找解决方案了,决定直接修改源码
。 总共需修改两个类文件,activiti-engine-5.17.0.jar中的ProcessEngineConfiguration和activiti-explorer-5.17.0.jar中的EditorProcessDefinitionDetailPanel,具体修改如下:
ProcessEngineConfiguration.java
protected String activityFontName = "Arial";
protected String labelFontName = "Arial";改为
protected String activityFontName = "宋体";
protected String labelFontName = "宋体";
EditorProcessDefinitionDetailPanel.java中的deployModelerModel方法改成如下所示,加了utf-8
protected void deployModelerModel(final ObjectNode modelNode) {
BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);
String processName = modelData.getName() + ".bpmn20.xml";
Deployment deployment;
try {
deployment = repositoryService.createDeployment().name(modelData.getName())
.addString(processName, new String(bpmnBytes,"utf-8"))//加utf-8
.deploy();
ExplorerApp.get().getViewManager().showDeploymentPage(deployment.getId());
}catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch
}
}
编译,覆盖原来的类,重新部署启动,测试,成功解决乱码问题。这种做法不太建议使用,应该还有其他方法可以解决,暂时没找到,此做法作为临时解决方案。
博客围绕Activiti启动Tomcat时中文乱码问题展开。尝试通过配置文件、特定方法解决均未成功,最终直接修改activiti-engine-5.17.0.jar和activiti-explorer-5.17.0.jar中的两个类文件,编译覆盖后重新部署启动,成功解决乱码,但此为临时方案。
1363

被折叠的 条评论
为什么被折叠?



