zoukankan      html  css  js  c++  java
  • 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替换现在项目的相应文件;

     结束。

  • 相关阅读:
    优步UBER司机全国各地奖励政策汇总 (4月4日-4月10日)
    苏州Uber优步司机奖励政策(4月2日~4月3日)
    成都Uber优步司机奖励政策(4月5日)
    北京Uber优步司机奖励政策(4月5日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月5日)
    百度百科股票教程
    趋势型指标——MACD
    Git和Code Review流程
    nodejs npm常用命令
    win系统下nodejs安装及环境配置
  • 原文地址:https://www.cnblogs.com/gdjlc/p/9342787.html
Copyright © 2011-2022 走看看