private void next(mxCell cell, List<String> task) { if (cell == null || StringUtils.equals(cell.getAttribute(ActivityGraphConverter.GRAPH_TYPE), "UserTask")) { return; } int count = cell.getEdgeCount(); for (int i = 0; i < count; i++) { mxCell edge = (mxCell) cell.getEdgeAt(i); mxCell source = (mxCell) edge.getSource(); mxCell target = (mxCell) edge.getTarget(); mxCell next = null; if (target != null && target.getId().equals(cell.getId())) { continue; } if (target == null) { return; } if (StringUtils.equals(target.getAttribute(ActivityGraphConverter.GRAPH_TYPE), "UserTask")) { next(target, task); } task.add(ActivityGraphConverter.EDITOR_SHAPE_ID_PREFIX + target.getId()); } }
private void getPreNextTask(mxCell cell, List<String> task, boolean next) { if (cell == null || cell.isEdge()) return; int count = cell.getEdgeCount(); for (int i = 0; i < count; i++) { mxCell edge = (mxCell) cell.getEdgeAt(i); mxCell source = (mxCell) edge.getSource(); mxCell target = (mxCell) edge.getTarget(); mxCell preNext = null; if (next) { if (target != null && target.getId().equals(cell.getId())) { continue; } preNext = target; } else { if (source != null && source.getId().equals(cell.getId())) { mxCell sourceParent = (mxCell) source.getParent(); if (!StringUtils.equals( sourceParent.getAttribute(ActivityGraphConverter.GRAPH_TYPE), ActivityGraphConverter.GRAPH_SUBPROCESS)) { continue; } } preNext = source; mxCell sourceParent = (mxCell) source.getParent(); if (source != null && StringUtils.equals( source.getAttribute(ActivityGraphConverter.GRAPH_TYPE), "startEvent") && StringUtils.equals( sourceParent.getAttribute(ActivityGraphConverter.GRAPH_TYPE), ActivityGraphConverter.GRAPH_SUBPROCESS)) { preNext = sourceParent; } if (source == null && StringUtils.equals( cell.getAttribute(ActivityGraphConverter.GRAPH_TYPE), "startEvent")) { preNext = (mxCell) cell.getParent(); } } if (preNext == null) return; // // if(StringUtils.equals(preNext.getAttribute(ActivityGraphConverter.GRAPH_TYPE),ActivityGraphConverter.GRAPH_SUBPROCESS)){ // int childCount=cell.getChildCount(); // for(int j=0;j<childCount;j++){ // mxCell child=(mxCell)cell.getChildAt(j); // getPreNextTask(child,task,next); // } // } if (StringUtils.equals( preNext.getAttribute(ActivityGraphConverter.GRAPH_TYPE), ActivityGraphConverter.GRAPH_GATEWAY) || StringUtils.equals( preNext.getAttribute(ActivityGraphConverter.GRAPH_TYPE), ActivityGraphConverter.GRAPH_SUBPROCESS)) { getPreNextTask(preNext, task, next); } else { task.add(ActivityGraphConverter.EDITOR_SHAPE_ID_PREFIX + preNext.getId()); } } }