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工作流显示流程图且当前节点高亮
- duilib List控件,横向滚动时列表项不移动或者显示错位的bug的修复
- [正式发布]库存管理系统v1.1!修复大量BUG,以及UI显示!
- [2月19日的脚本] 在本地启用邮箱的用户组中修复空白的显示名称属性
- [bug修复方案分享]阿拉伯文导致TextView显示顺序左右颠倒
- activiti部署到linux后流程图不显示汉字的问题
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- element ui 表格动态列显示空白bug 修复
- duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
- [bug修复方案分享]Android4.0以上弹出Notification时图标显示不正常
- activiti学习资料(实例流程图的显示)
- 修复miniblink某些网站图片不显示的bug
- activiti 5.16 实现流程图高亮跟踪显示
- Activiti Explorer中待办任务无法显示的Bug
- 20180313.修复BUG:关注粉丝显示
- 关于dedeCMS v5.7后台设置友情链接图片无法正常显示的bug修复
- [置顶] Android 6.0 设备上RecyclerView只显示一行的Bug修复
- activiti5.17.0流程图及节点显示
- [duilib]修复UIOption同时显示背景图和背景色时,背景图不显示的bug
- BOOTSTRAP时间控件显示在模态框下面的bug修复