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配置文件中加入如下配置信息:

 <bean id="processEngineConfiguration" class="org.activiti.xxx.XXXProcessEngineConfiguration">
		<!-- 生成流程图的字体 -->
		<property name="activityFontName" value="宋体"></property>
		<property name="labelFontName" value="宋体"></property>
	</bean>
          方式2:

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

   

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

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

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

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


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值