activiti5.13.1在线流程设计器生成图片中文乱码

原创 2016年05月31日 23:04:35

最近在学习工作流,在整合在线流程设计器的时候,发现在流程设计器编辑出的模型数据后,部署时生成图片会中文乱码。在这里记录一下我尝试过的方法。

方法一   修改相关源码一:

org.activiti.engine.impl包中的RepositoryServiceImpl类的getModelEditorSource方法

public byte[] getModelEditorSource(String modelId) {
	  byte[] json_byte= commandExecutor.execute(new GetModelEditorSourceCmd(modelId));
	    try {
			if(!new String(json_byte).startsWith("{")){
              json_byte=new BASE64Decoder().decodeBuffer(new String(json_byte));
              return json_byte;
          }
		} catch (IOException e) {
			e.printStackTrace();
		}
      return json_byte;
  }

org.activiti.editor.rest.model包中的ModelSaveRestResource类的saveModel方法

public void saveModel(Form modelForm) {
    ObjectMapper objectMapper = new ObjectMapper();
    String modelId = (String) getRequest().getAttributes().get("modelId");
    //System.out.println("json " + modelForm.getFirstValue("json_xml"));
    
    try {
      
      /*ObjectNode modelNode = (ObjectNode) objectMapper.readTree(modelForm.getFirstValue("json_xml"));
      JsonToBpmnExport converter = new JsonToBpmnExport(modelNode);
      byte[] bpmnBytes = converter.convert();
      System.out.println("bpmn " + new String(bpmnBytes));*/
      
      RepositoryService repositoryService = ProcessEngines.getDefaultProcessEngine().getRepositoryService();
      Model model = repositoryService.getModel(modelId);
      
      ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
      
      modelJson.put(MODEL_NAME, modelForm.getFirstValue("name"));
      modelJson.put(MODEL_DESCRIPTION, modelForm.getFirstValue("description"));
      model.setMetaInfo(modelJson.toString());
      model.setName(modelForm.getFirstValue("name"));
      
      repositoryService.saveModel(model);
      
      //转成UTF-8 然后使用base64编码  
      String gbk=new String(modelForm.getFirstValue("json_xml").getBytes("GBK"));  
      String iso = new String(gbk.getBytes("UTF-8"),"ISO-8859-1");  
      String utf8=new String(iso.getBytes("ISO-8859-1"),"UTF-8");  
      byte[]  json_xml=new BASE64Encoder().encode(utf8.getBytes("UTF-8")).getBytes();
      
      repositoryService.addModelEditorSource(model.getId(), json_xml);
      
      InputStream svgStream = new ByteArrayInputStream(modelForm.getFirstValue("svg_xml").getBytes("utf-8"));
      TranscoderInput input = new TranscoderInput(svgStream);
      
      PNGTranscoder transcoder = new PNGTranscoder();
      // Setup output
      ByteArrayOutputStream outStream = new ByteArrayOutputStream();
      TranscoderOutput output = new TranscoderOutput(outStream);
      
      // Do the transformation
      transcoder.transcode(input, output);
      final byte[] result = outStream.toByteArray();
      repositoryService.addModelEditorSourceExtra(model.getId(), result);
      outStream.close();
      
    } catch(Exception e) {
      LOGGER.error("Error saving model", e);
      setStatus(Status.SERVER_ERROR_INTERNAL);
    }
  }

org.activiti.editor.ui包中的EditorProcessDefinitionDetailPanel类的deployModelerModel方法

protected void deployModelerModel(final ObjectNode modelNode) {
		try {
			BpmnModel model = new BpmnJsonConverter()
					.convertToBpmnModel(modelNode);
			byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(model);

			String bpmnString = new String(bpmnBytes, "UTF-8");

			String processName = modelData.getName() + ".bpmn20.xml";
			Deployment deployment = repositoryService.createDeployment()
					.name(modelData.getName())
					.addString(processName, bpmnString)
					.deploy();

			ExplorerApp.get().getViewManager()
					.showDeploymentPage(deployment.getId());
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


方法二    修改源码二:

org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas类中的 activityFontName 和 labelFontName的值为宋体。


方法三     在spring配置文件修改属性

<!-- 流程引擎的配置bean -->
	<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

	    <!-- 以下两个属性解决流程图中文乱码 -->  
	    <property name="activityFontName" value="宋体"></property>  
	    <property name="labelFontName" value="宋体"></property> 
	</bean>


建议使用方法三,本人经过测试方法一和方法二并无效。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jhonhai/article/details/51550046

osg拖拽器

-
  • 1970年01月01日 08:00

springmvc+activiti 完美整合- 流程在线设计+代码生成器+UI快速开发库,提高一半的开发效率

JEECG(J2EE Code Generation) 是一款基于代码生成器的智能开发平台,采用代码生成+手工MERGE半智能开发模式, 可以帮助解决Java项目60%的重复工作,让开发更多关注业务逻...
  • zhangdaiscott
  • zhangdaiscott
  • 2013-03-22 15:27:39
  • 39275

activiti5.16在线设计器汉化文件

  • 2016年02月25日 15:32
  • 53KB
  • 下载

Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法

最近研究Activiti流程,实现流程图gaoliangzhui
  • chq00788
  • chq00788
  • 2014-11-21 14:54:47
  • 4401

Activiti 生成图片乱码问题解决备忘录

Activiti流程图在Centos下生成流程图片乱码问题解决步骤一参考以下博客进行解决: http://blog.csdn.net/fenyu8/article/details/44417771解...
  • chenhai201
  • chenhai201
  • 2017-08-15 16:31:36
  • 656

log4cxx-0.10.0日志中文乱码

log4cxx-0.10.0日志中文乱码(金庆的专栏)log4cxx升级到0.10.0后, 发现中文输出为乱码.其实应该是中文变成了问号, 不是乱码.问号在logcxx中表示编解码过程中的字符丢失. ...
  • jq0123
  • jq0123
  • 2011-06-16 10:34:00
  • 6941

activiti 部署流程图后中文乱码

Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时...
  • hanghangaidoudou
  • hanghangaidoudou
  • 2015-11-12 17:09:00
  • 11833

activiti 发布后图片中汉字显示乱码问题

图片乱码的问题有两种   第一种 因为服务器缺少必要的字体到这的问题: 解决办法                                       第二种情况是...
  • wkwanglei
  • wkwanglei
  • 2014-03-06 17:14:39
  • 5966

Activiti工作流引擎使用(Activiti的乱码问题)

Activiti工作流引擎使用(Activiti的乱码问题) 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 Activiti与JBPM5?对于Activ...
  • u013802231
  • u013802231
  • 2014-04-22 10:31:55
  • 2117

Activiti-Explorer中设计的流程图保存到哪里去了?

会更新ACT_RE_MODEL和ACT_GE_BYTEARRAY表, ACT_GE_BYTEARRAY表保存了PNG图片和xml文件信息(其实是json格式的字符串),并关联到ACT_RE_MODE...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2016-05-04 18:38:48
  • 4872
收藏助手
不良信息举报
您举报文章:activiti5.13.1在线流程设计器生成图片中文乱码
举报原因:
原因补充:

(最多只允许输入30个字)