public void writeGraph( Writer writer, ElementGraph parentGraph, ProcessGraph<? extends ProcessModel> processGraph ) { PrintWriter out = new PrintWriter( writer ); out.println( "digraph G {" ); Set<FlowElement> spanElements = getSpanElements( processGraph ); Set<FlowElement> identityElements = getIdentityElements( processGraph ); Set<FlowElement> duplicatedElements = processGraph.getDuplicatedElements( parentGraph ); writeVertexSet( null, parentGraph, parentGraph, out, spanElements, true, duplicatedElements, identityElements ); writeEdgeSet( processGraph, parentGraph, parentGraph, out, spanElements, true, identityElements ); Iterator<? extends ProcessModel> topologicalIterator = processGraph.getOrdinalTopologicalIterator(); while( topologicalIterator.hasNext() ) { ProcessModel processModel = topologicalIterator.next(); out.println(); out.print( "subgraph cluster_" ); out.print( clusterIDProvider.getVertexName( processModel ) ); out.println( " {" ); out.print( INDENT ); out.print( "label = \"" ); out.print( clusterLabelProvider.getVertexName( processModel ) ); out.println( "\";" ); out.println(); writeVertexSet( processModel, parentGraph, processModel.getElementGraph(), out, spanElements, false, duplicatedElements, identityElements ); writeEdgeSet( processGraph, parentGraph, processModel.getElementGraph(), out, spanElements, false, identityElements ); out.println( "}" ); } out.println( "}" ); out.flush(); }