最近研究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 流程图高亮追踪 中文乱码问题解决方法的更多相关文章

  1. WingIDE中文乱码问题解决方法

    WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...

  2. 【转】asp.net Cookie值中文乱码问题解决方法

    来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...

  3. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  4. LoadRunner中文乱码问题解决方法

    LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本, ...

  5. python3 库pandas写入csv格式文件出现中文乱码问题解决方法

    python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...

  6. soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  7. tomcat启动控制台中文乱码问题解决方法

    tomcat启动控制台中文乱码问题解决方法,修改tomcat安装路径/conf/logging.properties文件 java.util.logging.ConsoleHandler.encodi ...

  8. tomcat项目中文乱码问题解决方法

    在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤. 1.更改Tomcat安装目录下的conf\server.xml,指定浏览器的编码格式为"utf-8"格式 ...

  9. JSP中文乱码问题解决方法小结

    在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱 码问题以及解决方法. 1.JSP页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要 ...

随机推荐

  1. Silverlight实例教程 - Validation用户提交数据验证捕获(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  2. docker下部署spring boot

    第 5 章 Docker + Spring Boot: 快速搭建和部署Java Web应用 0.你需要: JDK 1.8 : java -version Maven 3.0+ : mvn -v Git ...

  3. 【问题记录】eclipse启动web项目时,spring会初始化两次

    背景:一个tomcat,一个eclipse,一个SSM框架的web项目.在eclipse中新建tomcat服务器,默认配置,然后在服务器配置中将Server Locations改成Use Tomcat ...

  4. 关于Python的Object继承

    今天在Coding的使用,使用了python的单例模式,发现了一个很有趣的问题. class x(object): __se = None a = None def __new__(cls): if ...

  5. LeetCode406. Queue Reconstruction by Height Add to List

    Description Suppose you have a random list of people standing in a queue. Each person is described b ...

  6. F - Goldbach`s Conjecture 对一个大于2的偶数n,找有多少种方法使两个素数的和为n;保证素数a<=b; a+b==n; a,b都为素数。

    /** 题目:F - Goldbach`s Conjecture 链接:https://vjudge.net/contest/154246#problem/F 题意:对一个大于2的偶数n,找有多少种方 ...

  7. Hibernate命名查询

    hibernate命名的查询是通过一些有意义的名称来使用查询的方式.就类似于使用别名一样. Hibernate框架提供命名查询的概念,以便应用程序员不需要将查询分散到所有的java代码,进一步提高代码 ...

  8. Spring4 MVC REST服务使用@RestController实例

    在这篇文章中,我们将通过开发使用 Spring4 @RestController 注解来开发基于Spring MVC4的REST风格的JSON服务.我们将扩展这个例子通过简单的注释与JAXB标注域类支 ...

  9. Android 编程之入门开发目录管理器开发抽屉与文件分类-4

    在此目录管理APP里,我们能够尝试引用一些新的元素.在这里我给打击介绍一个叫抽屉的布局,QQ就用到了抽屉布局.不 过他们又在原有的基础上自己开发了新的抽屉布局.而且还蛮高大上的,顺便说说分类管理.这些 ...

  10. rest-framework框架的基本组件分析

    一.快速实例化 二.序列化 三.视图 四.身份认证,权限认证,频率限制 五.分页 六.响应器 七.路由 八.解释器