在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); }
1118行//這裏獲取的y我看來5.14的jar包這裏也是用了x的座標,因此這裏也作一個修改 ip
double tY = graphicInfo.getY(); 修改爲x 原來的獲取y錯誤
改爲 double tY = graphicInfo.getX();
LABEL_FONT = new Font(labelFontName, Font.BOLD, 12);//改爲粗體更明顯