解决ACTIVITI流程图设置字体不生效的问题
2014-04-16 12:11
585 查看
在ACTIVITI 5.15的版本中,有一个设置流程图的字体配置。
配置如下:
但是我通过代码生成流程图时,发现配置无效。
BpmnModel bpmnModel= repositoryService.getBpmnModel("流程定义ID");
InputStream inputStream= ProcessDiagramGenerator.generatePngDiagram(bpmnModel);
这样生成的流程图中是中文出现乱码。
跟踪了一下:
发现ProcessDiagramCanvas代码中的ProcessEngineConfiguration conf=Context.getProcessEngineConfiguration(); 这个配置为空,那么这个配置当然是无效的了。
如果单纯解决这个问题很好办直接修改代码:
protected String activityFontName = "宋体";
protected String labelFontName = "宋体";
就可以了。
但是需要我们需要解决的是为什么获取这个流程配置为空的问题,让流程配置文件生效。
分析原因:
为什么这个Context.getProcessEngineConfiguration();获取为空呢,这个是这样,这个需要有值的话,是需要经过activiti的拦截器的。
我使用上面代码生成的时候,那么他就不会经过他的拦截器了,那么这个获取的这个值一定为空。
解决方法:
我们让这个代码在流程引擎的拦截器下执行。
在activiti中可以使用命令的方式执行代码。
具体做法如下:
1.实现类让他注入commandExecutor。
2.定义一个cmd生成流程图。
3.调用这个cmd。
实现一个类继承BaseServiceImpl 。
在spring文件中配置这个service,这样再次调用生成代码,那么就可以读取到配置的数据了。
配置如下:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> <property name="databaseType" value="${jdbc.dbType}" /> <property name="dbIdentityUsed" value="false" /> <property name="history" value="audit" /> <property name="transactionManager" ref="transactionManager" /> <property name="databaseSchemaUpdate" value="true" /> <property name="jobExecutorActivate" value="false" /> <property name="idGenerator" ref="activitiIdGenerator" /> <property name="processDefinitionCache"> <bean class="com.hotent.bpmx.activiti.cache.ActivitiDefCache"></bean> </property> <property name="labelFontName" value="宋体"></property> <property name="activityFontName" value="宋体"></property> </bean>
但是我通过代码生成流程图时,发现配置无效。
BpmnModel bpmnModel= repositoryService.getBpmnModel("流程定义ID");
InputStream inputStream= ProcessDiagramGenerator.generatePngDiagram(bpmnModel);
这样生成的流程图中是中文出现乱码。
跟踪了一下:
发现ProcessDiagramCanvas代码中的ProcessEngineConfiguration conf=Context.getProcessEngineConfiguration(); 这个配置为空,那么这个配置当然是无效的了。
如果单纯解决这个问题很好办直接修改代码:
protected String activityFontName = "宋体";
protected String labelFontName = "宋体";
就可以了。
但是需要我们需要解决的是为什么获取这个流程配置为空的问题,让流程配置文件生效。
分析原因:
为什么这个Context.getProcessEngineConfiguration();获取为空呢,这个是这样,这个需要有值的话,是需要经过activiti的拦截器的。
我使用上面代码生成的时候,那么他就不会经过他的拦截器了,那么这个获取的这个值一定为空。
解决方法:
我们让这个代码在流程引擎的拦截器下执行。
在activiti中可以使用命令的方式执行代码。
具体做法如下:
1.实现类让他注入commandExecutor。
public class BaseServiceImpl extends ServiceImpl implements InitializingBean { @Resource ProcessEngine processEngine; @Override public void afterPropertiesSet() throws Exception { ProcessEngineImpl engine = (ProcessEngineImpl)processEngine; this.setCommandExecutor(engine.getProcessEngineConfiguration().getCommandExecutor()); } }
2.定义一个cmd生成流程图。
public class GenFlowImageCmd implements Command<InputStream> { private String bpmnDefId=""; public GenFlowImageCmd(String bpmnDefId){ this.bpmnDefId=bpmnDefId; } @Override public InputStream execute(CommandContext context) { RepositoryService repositoryService=(RepositoryService) AppUtil.getBean("repositoryService"); BpmnModel bpmnModel= repositoryService.getBpmnModel(bpmnDefId); InputStream inputStream= ProcessDiagramGenerator.generatePngDiagram(bpmnModel); return inputStream; } }
3.调用这个cmd。
实现一个类继承BaseServiceImpl 。
public class FlowImageService extends BaseServiceImpl { public InputStream getProcessImage(String bpmnDefId){ InputStream inputStream= this.commandExecutor.execute(new GenFlowImageCmd(bpmnDefId)); return inputStream; } }
在spring文件中配置这个service,这样再次调用生成代码,那么就可以读取到配置的数据了。
相关文章推荐
- 解决谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决360浏览器和谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决360浏览器和谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决谷歌(Google Chrome)浏览器下CSS设置字体大小小于12px无法生效的问题
- 解决httpclient超时设置不生效的问题
- Linux下Chrome字体设置和启用OpenGL、GPU显卡加速解决Flash CPU占用过高的问题
- 解决datepicker设置选中日期setDate不生效问题
- 关于网上解决Android4.x系统设置字体大小导致应用布局混乱引起的问题
- Linux下Chrome字体设置和启用OpenGL、GPU显卡加速解决Flash CPU占用过高的问题
- 解决jfreechart中文乱码,以及字体模糊,设置主题问题
- 通过注册表修改VC6.0的字体(可以解决在字体设置里面没有可选字体的问题)
- 成功解决Kubuntu Linux下的Opera字体设置问题 !
- 如何正常设置VS 2005 字体大小与颜色(附助解决包加载失败的问题)
- 解决Android4.0 系统设置大号字体后布局错乱的问题
- Netbeans8.1设置Consola字体并解决中文乱码问题
- ubuntu11.04安装NetBeans 7.0中文显示乱码或者方框问题的解决(JRE中文字体设置)
- 移动端页面以rem为单位设置字体大小不生效解决方法
- Fedora Core 5.0 中添加字体及应用程序字体设置方法及解决JVM乱码问题