Activiti部署流程时图片中文乱码解决方法

           一个流程定义会对应一个图片资源,图片可以由引擎自动生成,或者与流程定义一起部署(压缩包方式),这样引擎不再自动生成图片资源,而是使用部署包中的图片资源。是否生成图片分为两种情况:如果仅仅部署扩展名为bpmn或者bpmn20.xml的文件会自动生成图片;如果部署的是一个压缩包,若压缩包中不包含和流程定义同名的图片文件,则引擎同样会自动生成图片文件。

          部署完后通过查看流程图,发现图片中的中文出现乱码。导致乱码的原因是字体库的原因,因为Activiti引擎默认的字体名称为“Arial”,而“Arial”不支持中文字符。故解决办法如下:

           方式1:由于Activiti生成图片使用的是Awt(JDK中提供的画图组件),负责生成图片的java类为“org.activiti.engine.impl.bpmn.diagram.ProcessDiagramCanvas”此类中有一行关键的代码为“Font font = new Font(activityFontName, Font.BOLD, FONT_SIZE);”其中的activityFontName默认为"Arial"。这时只需要把默认的字体文件改为操作系统中支持中文的字体文件名称即可。故需要在activiti.cfg.xml配置文件中加入如下配置信息:

 
		
		
		
	
          方式2:

                  部署流程定义的时候连带着流程定义同名的图片文件一起打包部署即可。(推荐此方式)

   

如果只部署流程定义文件,让系统自动生成图片的话,会有如下问题:

         1、中文乱码(上面方式1能解决)

          2、自动生成的图片会丢失坐标信息,导致后面流程图片追踪会有问题。(修改源码解决)

          3、过长的文字会被截取。(修改源码解决)


你可能感兴趣的:(Activiti)