activiti查看流程圖的bug

在activiti的開發過程當中,要用到查看流程圖,網絡上面有說能夠再部署的時候把xml和jpg一塊兒打包這樣就能夠防止座標錯位等問題,因爲我是直接用modeler設計部署,用到的代碼是: java

<span style="white-space:pre">		</span>DefaultProcessDiagramGenerator dpg = new DefaultProcessDiagramGenerator();

		is = dpg.generateDiagram(bpmnModel, "png", activitiIds,flowIds);

可是發現查看的圖形在直線的label上面顯示出現了問題,個人activiti是5.16.1, 網絡

第一點:自帶modeler設計的不會有 字體

 <bpmndi:BPMNLabel>
          <omgdc:Bounds height="14.0" width="24.0" x="492.0" y="263.0"></omgdc:Bounds>
        </bpmndi:BPMNLabel> spa


因此顯示沒有東西 插件

要是用Eclipse的插件設計就會有這個標籤,可是顯示也是錯位,爲了解決這個問題,只好修改源代碼,查看源代碼:activiti-image-generator-5.16.1是這個jar包 設計

DefaultProcessDiagramGenerator code

564行存在邏輯bug,判斷非空狀況下應該不須要去獲取連線的中間點,直接使用設置的label座標,因此這裏作一個修改 xml

if (labelGraphicInfo != null) {
        GraphicInfo lineCenter = getLineCenter(graphicInfoList);
        processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, false);
      }
改爲 沒有設置label的時候用連線的中間點作座標,有設置就直接用設置的,這樣也能夠防止modeler設計的沒有label標籤也能正常顯示了
if (labelGraphicInfo == null) {
        GraphicInfo lineCenter = getLineCenter(graphicInfoList);
        processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, false);
      }else{
    	  processDiagramCanvas.drawLabel(sequenceFlow.getName(), labelGraphicInfo, false);
      }


DefaultProcessDiagramCanvas

1118行//這裏獲取的y我看來5.14的jar包這裏也是用了x的座標,因此這裏也作一個修改 ip

double tY = graphicInfo.getY(); 修改爲x 原來的獲取y錯誤
改爲
    	  double tY = graphicInfo.getX();

215 行這裏同時能夠修改一下label的字體和大小,默認是斜體和藍色,因此改爲粗體黑色更明顯
LABEL_FONT = new Font(labelFontName, Font.BOLD, 12);//改爲粗體更明顯

通過這2個類的修改,在進行查看流程圖的時候就能夠再直線上面顯示了

相關文章
相關標籤/搜索