diff --git a/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar b/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar index 863510a5..1fd9bd24 100644 Binary files a/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar and b/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar differ diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java index 301351ac..dddee769 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java @@ -229,6 +229,21 @@ public class GraphNodeCloseHandle { private void removeScopeShapeAndInRangeEle(){ JSONArray innerEleKeySet = scopeLimitationShape.getJSONArray(SubProcessConst.INNER_ELEMENTS); + + // 闭合时存在一种特殊连线 此连线跨越俩个范围框 与俩个范围框内部节点相连 如果存在此连线 节点闭合时也删除 + JSONArray linkers = definitionHandle.getLinkers(); + List toDeleteLinkerIds = linkers.stream().filter(l -> (innerEleKeySet.contains(((JSONObject) l).getJSONObject("from").getString("id")) + && !innerEleKeySet.contains(((JSONObject) l).getJSONObject("to").getString("id")) + && definitionHandle.getElementTypeByKey(((JSONObject) l).getJSONObject("to").getString("id")).name().equals(ElementType.INNER_NODE.name())) + || (!innerEleKeySet.contains(((JSONObject) l).getJSONObject("from").getString("id")) + && innerEleKeySet.contains(((JSONObject) l).getJSONObject("to").getString("id")) + && definitionHandle.getElementTypeByKey(((JSONObject) l).getJSONObject("from").getString("id")).name().equals(ElementType.INNER_NODE.name()))) + .map(l -> ((JSONObject) l).getString("id")) + .collect(Collectors.toList()); + for (String toDeleteLinkerId : toDeleteLinkerIds) { + definitionHandle.removeShape(toDeleteLinkerId); + } + Set keys = innerEleKeySet.stream().map(o -> o.toString()).collect(Collectors.toSet()); for (String key : keys) { definitionHandle.removeShape(key); diff --git a/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar b/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar index 2ea8563d..175cc371 100644 Binary files a/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar and b/com.actionsoft.apps.coe.pal/lib/com.actionsoft.apps.coe.pal.jar differ diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java index 6a351631..3047664f 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/repository/web/CoeProcessLevelWeb.java @@ -6143,7 +6143,22 @@ public class CoeProcessLevelWeb extends ActionWeb { personLinker.put("linkerElementType", linker.getString("elementType")); return personLinker; }) - .filter(personLinker -> !("INNER_NODE".equals(personLinker.getString("fromElementType")) && "INNER_NODE".equals(personLinker.getString("toElementType")))) + .filter(personLinker -> { + boolean flag = true; + String fromId = personLinker.getString("fromId"); + String toId = personLinker.getString("toId"); + + JSONObject fromNode = elements.getJSONObject(fromId); + JSONObject toNode = elements.getJSONObject(toId); + + if ("INNER_NODE".equals(personLinker.getString("fromElementType")) && "INNER_NODE".equals(personLinker.getString("toElementType"))){ + if (fromNode.getString("scopeShapeId").equals(toNode.getString("scopeShapeId"))){ // 说明同属于 同一个范围框 的内部连线 过滤掉 + flag = false; + } + } + + return flag; + }) .collect(Collectors.toList()); JSONObject nodeLinkerRecord = new JSONObject(); diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js index e7269183..a3ec5494 100755 --- a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js @@ -2184,7 +2184,7 @@ var Designer = { if ((fromObj.elementType == "OUTER_NODE" && toObj.elementType == "OUTER_NODE") || (fromObj.elementType == "SCOPE_NODE" && toObj.elementType == "SCOPE_NODE")){ d.elementType = "OUTER_LINKER"; window.subProcess.outerNodeExtendAttrHandle(d); - }else if (fromObj.elementType == "INNER_NODE" && toObj.elementType == "INNER_NODE"){ + }else if (fromObj.elementType == "INNER_NODE" && toObj.elementType == "INNER_NODE" && fromObj.scopeShapeId == toObj.scopeShapeId){ d.elementType = "INNER_LINKER"; let scopeShapeKey = window.subProcess.calculateLinkerInWhichScope(d); d.scopeShapeId = scopeShapeKey;