子流程节点与普通节点相连 子流程节点展开报错问题

This commit is contained in:
qinoy 2023-07-21 16:59:50 +08:00
parent 8057a06476
commit 4b1d967cfa
4 changed files with 72 additions and 50 deletions

View File

@ -73,6 +73,7 @@ public class ExpandOrCloseShapeLinkerConvertHandle {
if (leadNodeType.name().equals(ElementType.OUTER_NODE.name()) || leadNodeType.name().equals(ElementType.SCOPE_NODE.name())){
// 获取前置节点的扩展属性
JSONObject extendAttr = leadNode.getJSONObject(SubProcessConst.EXTEND_ATTR);
if (extendAttr.containsKey("id")){
// 当前前置节点 所代表的子流程文件ID
String leadNodeRelationId = extendAttr.getString("id");
// 1未展开 子流程节点
@ -97,6 +98,7 @@ public class ExpandOrCloseShapeLinkerConvertHandle {
break;
}
}
}
}else { // 已展开 内部节点
// 此时前置节点为某一个范围框的内部节点 找到当前内部节点归属哪个范围框 判断当前范围框是否与当前展开的内部流程接口有关联
String scopeShapeId = leadNode.getString("scopeShapeId");
@ -133,6 +135,7 @@ public class ExpandOrCloseShapeLinkerConvertHandle {
if (procedureArr.size() > 0){ // 范围框内部存在前置或者后置流程接口
if (rearNodeType.name().equals(ElementType.OUTER_NODE.name()) || rearNodeType.name().equals(ElementType.SCOPE_NODE.name())){
JSONObject extendAttr = rearNode.getJSONObject(SubProcessConst.EXTEND_ATTR);
if (extendAttr.containsKey("id")){
// 当前后置节点 所代表的子流程文件ID
String rearNodeRelationId = extendAttr.getString("id");
for (Object o2 : procedureArr) {
@ -153,6 +156,7 @@ public class ExpandOrCloseShapeLinkerConvertHandle {
break;
}
}
}
}else {
// 此时后置节点为某一个范围框的内部节点 找到当前内部节点归属哪个范围框 判断当前范围框是否与当前展开的内部流程接口有关联
String scopeShapeId = rearNode.getString("scopeShapeId");

View File

@ -470,10 +470,14 @@ class NodeCloseLinkerRender{
{toX + toW / 2, toY}
};
}else {
// fromX < toX && fromY > toY 目标节点在第一象限 分析可知 纵向排布的情况下 应该不会出现目标节点在第一象限的情况
return new double[][]{
{fromX + fromW, fromY + fromH / 2},
{fromX + getCurrentColMaxW(fromX) + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + fromH / 2},
{fromX + getCurrentColMaxW(fromX) + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, toY + toH / 2},
{toX, toY + toH / 2}
};
}
}
return new double[2][2];
}
private double[][] calculationLinkerPointInHorizLayOut(double[] fromBounding, double[] toBounding) {
@ -563,7 +567,12 @@ class NodeCloseLinkerRender{
};
}
}else if (fromX > toX && fromY < toY){ // 目标节点在第三象限 横向布局的情况下 应该不会出现目标节点在第三象限的情况
ConsolePrinter.warn("[端到端功能][节点展开模块]处理连线时目标节点在[横向布局]的情况下出现在了第三象限");
return new double[][]{
{fromX + fromW / 2, fromY + fromH},
{fromX + fromW / 2, fromY + fromH + SubProcessConst.SHAPE_VERT_INTERVAL / 2},
{toX + toW / 2, fromY + fromH + SubProcessConst.SHAPE_VERT_INTERVAL / 2},
{toX + toW / 2, toY}
};
}
}
return new double[2][2];

View File

@ -583,10 +583,14 @@ class NodeExpandLinkerRender{
{toX + toW / 2, toY}
};
}else {
// fromX < toX && fromY > toY 目标节点在第一象限 分析可知 纵向排布的情况下 应该不会出现目标节点在第一象限的情况
return new double[][]{
{fromX + fromW, fromY + fromH / 2},
{fromX + getCurrentColMaxW(fromX) + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + fromH / 2},
{fromX + getCurrentColMaxW(fromX) + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, toY + toH / 2},
{toX, toY + toH / 2}
};
}
}
return new double[2][2];
}
private double[][] calculationLinkerPointInHorizLayOut(double[] fromBounding, double[] toBounding) {
@ -677,7 +681,12 @@ class NodeExpandLinkerRender{
};
}
}else if (fromX > toX && fromY < toY){ // 目标节点在第三象限 横向布局的情况下 应该不会出现目标节点在第三象限的情况
ConsolePrinter.warn("[端到端功能][节点展开模块]处理连线时目标节点在[横向布局]的情况下出现在了第三象限");
return new double[][]{
{fromX + fromW / 2, fromY + fromH},
{fromX + fromW / 2, fromY + fromH + SubProcessConst.SHAPE_VERT_INTERVAL / 2},
{toX + toW / 2, fromY + fromH + SubProcessConst.SHAPE_VERT_INTERVAL / 2},
{toX + toW / 2, toY}
};
}
}
return new double[2][2];