Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法
最近研究activiti的高亮流程图,发现中文是乱码,为了让大家少走弯路共享出来。
本文包含三个主要技术点:
1、spring MVC架构下输出动态图片
2、获得activiti流程图的stream流
3、实现执行的任务高亮和中文无乱码
首先修改activiti.cfg.xml文件
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> <!-- 配置数据源,和系统使用同一个数据源 -->
<property name="dataSource" ref="dataSource" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" /> <property name="transactionManager" ref="transactionManager" />
<!-- 下面这两行是关于中文乱码的,不知道为什么选择微软雅黑不生效,可能和tomcat容器下找不到字库有关系,切忌,修改这里后还要修改java代码 -->
<property name="activityFontName" value="宋体" />
<property name="labelFontName" value="宋体" />
</bean>
然后是java代码
@RequestMapping(value = "/taskImg", method = RequestMethod.GET)
@ResponseBody
protected String taskImg(
HttpServletResponse response,
@RequestParam(value = "processInstanceId", required = true) String processInstanceId)
throws IOException {
//根据流程定义ID获得流程实例
ProcessInstance pi = this.engine.getRuntimeService()
.createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult();
BpmnModel bpmnModel = this.engine.getRepositoryService().getBpmnModel(
pi.getProcessDefinitionId()); // 得到正在执行的环节
List<String> activeIds = this.engine.getRuntimeService()
.getActiveActivityIds(pi.getId());
DefaultProcessDiagramGenerator dpg = new DefaultProcessDiagramGenerator();
//获得流程图的流对象,这里显示的加载了字体
InputStream is = dpg.generateDiagram(bpmnModel, "png", activeIds,
Collections.<String> emptyList(), this.engine
.getProcessEngineConfiguration().getActivityFontName(),
this.engine.getProcessEngineConfiguration().getLabelFontName(),
null, 1.0);
//输出流准备
int readSize = 0;
byte[] data = new byte[8192];
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
//每次读出8192字节
while ((readSize = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, readSize);
}
is.close();//关闭原始流 //根据response的输出流,即客户端流
ServletOutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象 toClient.write(buffer.toByteArray()); // 输出数据
toClient.flush();
//关闭输出流
toClient.close();
//图片流已经从response对象输出了,函数返回null就可以了
return null;
}
Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法的更多相关文章
- WingIDE中文乱码问题解决方法
WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...
- 【转】asp.net Cookie值中文乱码问题解决方法
来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...
- soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)
soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...
- LoadRunner中文乱码问题解决方法
LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本, ...
- python3 库pandas写入csv格式文件出现中文乱码问题解决方法
python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...
- soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试
soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...
- tomcat启动控制台中文乱码问题解决方法
tomcat启动控制台中文乱码问题解决方法,修改tomcat安装路径/conf/logging.properties文件 java.util.logging.ConsoleHandler.encodi ...
- tomcat项目中文乱码问题解决方法
在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤. 1.更改Tomcat安装目录下的conf\server.xml,指定浏览器的编码格式为"utf-8"格式 ...
- JSP中文乱码问题解决方法小结
在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱 码问题以及解决方法. 1.JSP页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要 ...
随机推荐
- .htaccess中的apache rewrite规则写法详解(未完)
转:http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html http://blog.csdn.net/Long_Xiao_Yun/ ...
- JS鼠标的拖拽原理
拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等,效果还是蛮不错的.下面讲解一下拖拽的原理,希望可以帮助到有需要的朋友! 一.拖拽的流程动作①鼠标按下②鼠标移动③鼠标松开 ...
- srping mvc学习
HOME 控制器 package ghy.webapp.myapp; import java.text.DateFormat; import java.util.Date; import java.u ...
- Ubuntu vsftp复制文件到远端时错误,Permission denied
Ubuntu 下复制文件到远端时错误,Permission denied 失败原因如下: (1)vsftp默认配置不允许上传文件 解决办法:修改配置文件 vi /etc/vsftpd.conf. 将& ...
- CI框架 简介
CI工作流程: 所有的入口都从根目录下的index.php进入,确定应用所在目录后,加载 codeigniter/CodeIgniter.php 文件,该文件会顺序加载以下文件执行整个流 ...
- Python 字典初始化dict()和{}
参考:https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpyth ...
- 表单中method="post"什么意思?
表示表单中的数据以"post"方法传递.Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的 ...
- Python 爬虫实战2 百度贴吧帖子
爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖内容 将抓取到的内容分析并保存到文件 1.URL格式的确定 首先, ...
- ftp uploadFileAction(重要)
TelnetOUtputStream os = ftpClient.put(filename); File file_in = new File(localPath); FileInputStream ...
- hibernate Session一级缓存 应该注意的地方
Session缓存 Hibernate的一级缓存是由Session提供的,因此它存在于Session的整个生命周期中,当程序调用save()/update()/saveOrupdate()/get() ...