端到端 子流程节点展开后 内外节点连线处理

This commit is contained in:
qinoy 2023-07-12 10:29:49 +08:00
parent c211173b8e
commit 6b60c9a557
5 changed files with 32 additions and 2 deletions

View File

@ -229,6 +229,21 @@ public class GraphNodeCloseHandle {
private void removeScopeShapeAndInRangeEle(){
JSONArray innerEleKeySet = scopeLimitationShape.getJSONArray(SubProcessConst.INNER_ELEMENTS);
// 闭合时存在一种特殊连线 此连线跨越俩个范围框 与俩个范围框内部节点相连 如果存在此连线 节点闭合时也删除
JSONArray linkers = definitionHandle.getLinkers();
List<String> 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<String> keys = innerEleKeySet.stream().map(o -> o.toString()).collect(Collectors.toSet());
for (String key : keys) {
definitionHandle.removeShape(key);

View File

@ -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();

View File

@ -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;