activiti 5.13流程图连线名称不显示bug修复
使用modeler设计器,流程图连线名称是有显示的,但是运行结果却没显示。
找到网上2遍文章,说是activiti框架中的一个bug,要修改
DefaultProcessDiagramGenerator类的代码:
https://blog.csdn.net/fgstudent/article/details/39916003
http://www.shareniu.com/article/61.htm
// Draw sequenceflow label
GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId
());
if (labelGraphicInfo != null) {
processDiagramCanvas.drawLabel(sequenceFlow.getName(), labelGraphicInfo, false);
}
修改为:
// Draw sequenceflow label
GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId
());
if (labelGraphicInfo != null) {
processDiagramCanvas.drawLabel(sequenceFlow.getName(), labelGraphicInfo, false);
}else {
GraphicInfo lineCenter = getLineCenter(graphicInfoList);
processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, false);
}
但是上面文章的activiti版本是5.16、5.22,本人项目用的是5.13(jdk为1.6),没有
DefaultProcessDiagramGenerator类,而是ProcessDiagramGenerator类,而且方法
drawLabel也不支持上面3个参数,需要5个参数,经过一番测试,终于解决。
下面是整个修改过程:
1、用反编译工具jd-gui把项目的所有activiti的jar包反编译保存为源码;
2、在eclipse中新建一个项目,把源码放进去(jdk和项目保持一致设为1.6,刚开始设为1.8
,结果运行提示有错误),代码在eclipse提示有错误的话,可不理会,只要项目会生成
class文件就行。
3、在eclipse中打开类ProcessDiagramGenerator(对应包为activiti-engine-5.13.jar),
找到代码
if (!drawedLabel) {
GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId
());
if (labelGraphicInfo != null) {
int middleX = (int)((previousGraphicInfo.getX() + labelGraphicInfo.getX() +
(graphicInfo.getX() + labelGraphicInfo.getX())) / 2.0D);
int middleY = (int)((previousGraphicInfo.getY() + labelGraphicInfo.getY() +
(graphicInfo.getY() + labelGraphicInfo.getY())) / 2.0D);
middleX += 15;
processDiagramCanvas.drawLabel(sequenceFlow.getName(), middleX, middleY, (int)
labelGraphicInfo.getWidth(), (int)labelGraphicInfo.getHeight());
drawedLabel = true;
}
修改为
if (!drawedLabel) {
GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId
());
if (labelGraphicInfo != null) {
processDiagramCanvas.drawLabel(sequenceFlow.getName(), (int)
labelGraphicInfo.getX(), (int)labelGraphicInfo.getY(), (int)
labelGraphicInfo.getWidth(), (int)labelGraphicInfo.getHeight());
drawedLabel = true;
}
保存,Eclipse会自动编译,生成class文件,可看到ProcessDiagramGenerator.class,
ProcessDiagramGenerator$1.class至ProcessDiagramGenerator$20.class、
ProcessDiagramGenerator$ActivityDrawInstruction.class自动修改保存。
4、右键activiti-engine-5.13.jar用压缩软件如WinRAR打开,定位到
ProcessDiagramGenerator.class的所在位置,把第3步的class文件直接拖进去替换掉。
5、把第4步activiti-engine-5.13.jar替换现在项目的相应文件;
结束。
activiti 5.13流程图连线名称不显示bug修复的更多相关文章
- 执行ldconfig命令后报错的解决过程:ldconfig: 目录 /lib 中的 libpng.so 和 libpng15.so.15.13.0 的 so 名称相同但类型不同。
执行ldconfig命令后报错: 目录 /lib 中的 libpng.so 和 libpng15.so.15.13.0 的 so 名称相同但类型不同. 解决过程: mv /lib/libpng.so ...
- Activiti 5.16 流程图高亮追踪 中文乱码问题解决方法
最近研究activiti的高亮流程图,发现中文是乱码,为了让大家少走弯路共享出来. 本文包含三个主要技术点: 1.spring MVC架构下输出动态图片 2.获得activiti流程图的stream流 ...
- Redis 集群缓存测试要点--关于 线上 token 失效 BUG 的总结
在测试账户系统过程中遇到了线上大面积用户登录态失效的严重问题,事后对于其原因及测试盲点做了一些总结记录以便以后查阅,总结分为以下7点,其中原理性的解释有些摘自网络. 1.账户系统token失效问题复盘 ...
- openerp学习笔记 按客户电话、名称模糊查找选择客户(name_search)及客户名称自定义显示(name_get)
#同时按手机.电话.名称模糊查找选择客户 def name_search(self, cr, user, name, args=None, operator='ilike', context=N ...
- Spring Boot整合Activiti,查看流程图出现中文乱码问题
最近研究SpringBoot 整合Activiti时,实现流程图高亮追踪是出现中文乱码问题,找了很多方法,现在把我最后的解决方法提供给大家. Spring Boot是微服务快速开发框架,强调的是零配置 ...
- activiti 5.17 流程图中文乱码问题
1. 流程图中任务中的中文乱码显示问题. 解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...
- activiti在线画流程图
springboot2.2 activiti6.0 activiti-modeler 5.22.0 注明:版本不一样会导致报错 上一篇:springboot整合activiti 效果图 代码分享:ht ...
- activiti 5.13 使用activiti设置用户组任务的 工作流的角色
1.设置activiti 流程引擎的用户,组别,关系/**在部署流程定义和启动流程实例的中间,设置组任务的办理人,向Activiti表中存放组和用户的信息*/ IdentityService iden ...
- activiti获取到流程图节点信息之任务节点
//获取bpmnModel对象 BpmnModel model1 = new BpmnJsonConverter().convertToBpmnModel(modelNode); //由于我们这里仅仅 ...
随机推荐
- Gambler Bo (高斯消元求特解)
对于图中的每一个点假设点击Xi * m + j 然后每个点都有那么对于每一个点可以列举出一个方程式,n*m个点解n*m个未知数.利用高斯消元就可以解决. 问题就在这个题目可能不止有一个特,所以我们需要 ...
- numpy元素级数组函数
一元函数 abs, fabs 计算整数.浮点数或复数的绝对值.对于非复数值,可以使用更快的fabs. sqrt 计算各元素的平方根.相当于arr ** 0.5 sqare 计算各元素的平方.相当于ar ...
- array_contains 分析函数使用演示
Hive中的array_contains函数与SQL中的 in关键字 操作类似,用于判定 包含(array_contains)或不包含(!array_contains)关系.与 in不同的是array ...
- 使用AJAX技术发送异步请求,HTTP服务端推送
使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于X ...
- MongoDB With Spark遇到的2个错误,不能初始化和sample重复的key
1.$sample stage could not find a non-duplicate document while using a random cursor 这个问题比较难解决,因为我用mo ...
- localStorage单页面及不同页面监听变动
分析 H5本地存储有两个API,一个是Web Storage,还有一个是Web SQL.不管是哪一个,都是基于JavaScript语言来使用,而Web Storage提供了两种存储类型 API: s ...
- [转载]WebService使用的一些总结
什么是WebService: 这个不用我在这里废话,网上的资料一搜一大把,如果你没有接触过这方面的知识,你可以先去网上查一下.这里我只想说一下我印象比较深刻的几点: WebService是基于soap ...
- zabbix实现电话、短信、邮件报警
该报警方式提前说明:(1)该方式可以实现zabbix免费电话报警以及微信.短信.邮件报警,但有数量限制.详见如下:如数量不能满足需要以及人员需要,可以考虑购买收费版.(2)毕竟是免费版,电话通知要省着 ...
- eHR自动同步获取LDAP中的邮箱地址
背景:公司里有eHR系统,有网域,IBM Lotus Notes邮件系统,新人入职会在eHR系统里提前建好档案,网域帐号.邮箱帐号均会在入职前提前建好,因为邮箱帐号是晚于eHR建档的,因此在eHR建档 ...
- excel 方框打钩
将光标定位于需要打钩的地方,选择[插入]→[符号]→[其他符号] 在弹出的符号栏里,字体一定要改成[Windings2] 然后在符号栏便可以找到现成的打钩样式,点击插入,再关闭即可 提示:如果需要打叉 ...