From 2fd95d86f8f397347a21fa8df300146f9d232a47 Mon Sep 17 00:00:00 2001 From: Manik Magar Date: Wed, 30 Sep 2020 20:45:03 -0400 Subject: [PATCH] [minor] feat: Generate graph legend (#110) --- .../mulefd/drawings/GraphDiagram.java | 138 +- .../mulefd/drawings/GraphDiagramTest.java | 13 +- .../drawToValidateGraph_APIKIT_Expected.json | 1572 +++++++++++++---- .../drawToValidateGraph_Expected.json | 936 +++++++++- .../single-flow-generation-example.json | 995 ++++++++++- 5 files changed, 3151 insertions(+), 503 deletions(-) diff --git a/src/main/java/com/javastreets/mulefd/drawings/GraphDiagram.java b/src/main/java/com/javastreets/mulefd/drawings/GraphDiagram.java index 8b7fd5e..2ce1aa4 100644 --- a/src/main/java/com/javastreets/mulefd/drawings/GraphDiagram.java +++ b/src/main/java/com/javastreets/mulefd/drawings/GraphDiagram.java @@ -1,7 +1,8 @@ package com.javastreets.mulefd.drawings; import static com.javastreets.mulefd.util.FileUtil.sanitizeFilename; -import static guru.nidi.graphviz.attribute.Arrow.*; +import static guru.nidi.graphviz.attribute.Arrow.DirType; +import static guru.nidi.graphviz.attribute.Arrow.VEE; import static guru.nidi.graphviz.model.Factory.*; import java.io.File; @@ -9,8 +10,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.*; -import java.util.function.Consumer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,6 +28,7 @@ import guru.nidi.graphviz.engine.Format; import guru.nidi.graphviz.engine.Graphviz; import guru.nidi.graphviz.engine.GraphvizV8Engine; +import guru.nidi.graphviz.model.Link; import guru.nidi.graphviz.model.MutableGraph; import guru.nidi.graphviz.model.MutableNode; @@ -34,9 +38,9 @@ public class GraphDiagram implements Diagram { @Override public boolean draw(DrawingContext drawingContext) { - MutableGraph rootGraph = initNewGraph(); + MutableGraph rootGraph = initNewGraphWithLegend(true); + MutableGraph appGraph = addApplicationGraph(rootGraph); File targetDirectory = drawingContext.getOutputFile().getParentFile(); - Map flowRefs = new HashMap<>(); List mappedFlowKinds = new ArrayList<>(); List flows = drawingContext.getComponents(); @@ -48,7 +52,7 @@ public boolean draw(DrawingContext drawingContext) { .findFirst().orElseThrow(() -> new DrawingException( "Target flow not found - " + drawingContext.getFlowName())); MutableNode flowNode = processComponent(component, drawingContext, flowRefs, mappedFlowKinds); - flowNode.addTo(rootGraph); + flowNode.addTo(appGraph); } for (Component component : flows) { @@ -59,26 +63,61 @@ public boolean draw(DrawingContext drawingContext) { processComponent(component, drawingContext, flowRefs, mappedFlowKinds); if (drawingContext.isGenerateSingles() && component.isaFlow()) { - MutableGraph flowGraph = initNewGraph(); - flowNode.addTo(flowGraph); + MutableGraph flowRootGraph = initNewGraph(getDiagramHeaderLines()); + flowNode.addTo(flowRootGraph); for (Component component2 : flows) { if (mappedFlowKinds.contains(component2.qualifiedName())) { MutableNode flowNode3 = processComponent(component2, drawingContext, flowRefs, mappedFlowKinds); - flowNode3.addTo(flowGraph); + flowNode3.addTo(flowRootGraph); } } - writeFlowGraph(component, singleFlowDirPath, flowGraph); + writeFlowGraph(component, singleFlowDirPath, flowRootGraph); } - flowNode.addTo(rootGraph); + flowNode.addTo(appGraph); } } if (drawingContext.getFlowName() == null) { - checkUnusedNodes(rootGraph); + checkUnusedNodes(appGraph); } return writGraphToFile(drawingContext.getOutputFile(), rootGraph); } + MutableGraph addApplicationGraph(MutableGraph rootGraph) { + MutableGraph appGraph = initNewGraph("Application graph"); + appGraph.setCluster(true).graphAttrs().add(Style.INVIS); + appGraph.addTo(rootGraph); + return appGraph; + } + + MutableNode sizedNode(String label, double width) { + return mutNode(label).add(Size.mode(Size.Mode.FIXED).size(width, 0.25)); + } + + void addLegends(MutableGraph rootGraph) { + log.debug("Adding legend to graph - {}", rootGraph.name()); + graph("legend").directed().cluster().graphAttr().with(Label.html("Legend"), Style.DASHED) + .with( + asFlow(sizedNode("flow", 1)) + .addLink(to(asSubFlow(sizedNode("sub-flow", 1))).with(Style.INVIS)), + asSubFlow(sizedNode("sub-flow", 1)) + .addLink(to(asUnusedFlow(sizedNode("Unused sub/-flow", 2))).with(Style.INVIS)), + sizedNode("Flow A", 1).addLink(callSequenceLink(1, sizedNode("sub-flow-1", 1.25)) + .with(Label.lines("Call Sequence").tail(-5, 8))), + sizedNode("Flow C", 1).addLink(asAsyncLink(1, sizedNode("sub-flow-C1", 1.25)) + .with(Label.lines("Asynchronous call").tail(-5, 8))), + asSourceNode(sizedNode("flow source", 1.5)) + .addLink(to(asFlow(sizedNode("flow self-call", 1.25))).with(Style.INVIS)), + asFlow(sizedNode("flow self-call", 2)).addLink(asFlow(sizedNode("flow self-call", 2))) + .addLink(to(asSubFlow(sizedNode("sub-flow self-call", 2)) + .addLink(asSubFlow(sizedNode("sub-flow self-call", 2)))).with(Style.INVIS))) + .addTo(rootGraph); + // legend-space is added to create gap between application graph and legend. + // this is a hidden cluster + graph("legend-space").cluster().graphAttr().with(Label.of(""), Style.INVIS) + .with(node("").with(Shape.NONE, Size.std().size(2, 1))).addTo(rootGraph); + } + boolean writeFlowGraph(Component flowComponent, Path targetDirectory, MutableGraph flowGraph) { if (!flowComponent.isaFlow()) return false; @@ -112,30 +151,60 @@ boolean writGraphToFile(File outputFilename, MutableGraph graph) { } } - MutableGraph initNewGraph() { + MutableGraph initNewGraphWithLegend(boolean legend) { + MutableGraph rootGraph = initNewGraph(getDiagramHeaderLines()); + if (legend) + addLegends(rootGraph); + return rootGraph; + } + + MutableGraph initNewGraph(String label) { + return initNewGraph(new String[] {label}); + } + + MutableGraph initNewGraph(String[] label) { return mutGraph("mule").setDirected(true).linkAttrs().add(VEE.dir(DirType.FORWARD)).graphAttrs() .add(Rank.dir(Rank.RankDir.LEFT_TO_RIGHT), GraphAttr.splines(GraphAttr.SplineMode.SPLINE), - GraphAttr.pad(2.0), GraphAttr.dpi(150), - Label.htmlLines(getDiagramHeaderLines()).locate(Label.Location.TOP)); + GraphAttr.pad(1, 0.5), GraphAttr.dpi(150), + Label.htmlLines(label).locate(Label.Location.TOP)); } private void checkUnusedNodes(MutableGraph graph) { graph.nodes().stream() .filter(node -> node.links().isEmpty() && graph.edges().stream().noneMatch( edge -> edge.to().name().equals(node.name()) || edge.from().name().equals(node.name()))) - .forEach(node -> node.add(Color.RED, Style.FILLED, Color.GRAY)); + .forEach(this::asUnusedFlow); + } + + MutableNode asUnusedFlow(MutableNode node) { + return node.add(Color.RED, Style.FILLED, Color.GRAY); + } + + MutableNode asFlow(MutableNode node) { + return node.add(Shape.RECTANGLE).add(Color.BLUE); + } + + MutableNode asSubFlow(MutableNode node) { + return node.add(Color.BLACK).add(Shape.ELLIPSE); + } + + MutableNode asApikitNode(String name) { + return mutNode(name).add(Shape.DOUBLE_CIRCLE, Color.CYAN, Style.FILLED); + } + + MutableNode asSourceNode(MutableNode node) { + return node.add(Shape.HEXAGON, Style.FILLED, Color.CYAN).add("sourceNode", Boolean.TRUE); } MutableNode processComponent(Component component, DrawingContext drawingContext, Map flowRefs, List mappedFlowKinds) { log.debug("Processing flow - {}", component.qualifiedName()); FlowContainer flow = (FlowContainer) component; - Consumer asFlow = flowNode -> flowNode.add(Shape.RECTANGLE).add(Color.BLUE); MutableNode flowNode = mutNode(flow.qualifiedName()).add(Label.markdown(getNodeLabel(flow))); if (flow.isaSubFlow()) { - flowNode.add(Color.BLACK).add(Shape.ELLIPSE); + asSubFlow(flowNode); } else { - asFlow.accept(flowNode); + asFlow(flowNode); } MutableNode sourceNode = null; boolean hasSource = false; @@ -163,9 +232,8 @@ MutableNode processComponent(Component component, DrawingContext drawingContext, } if (muleComponent.isSource()) { hasSource = true; - sourceNode = - mutNode(name).add(Shape.HEXAGON, Color.DARKORANGE).add("sourceNode", Boolean.TRUE).add( - Label.htmlLines("" + muleComponent.getType() + "", muleComponent.getName())); + sourceNode = asSourceNode(mutNode(name)).add( + Label.htmlLines("" + muleComponent.getType() + "", muleComponent.getName())); } else if (muleComponent.getType().equals("apikit")) { // APIKit auto generated flows follow a naming pattern // "{httpMethod}:\{resource-name}:{apikitConfigName}" @@ -174,19 +242,17 @@ MutableNode processComponent(Component component, DrawingContext drawingContext, // 3. Link those flows with apiKit flow. log.debug("Processing apikit component - {}", component.qualifiedName()); MutableNode apiKitNode = - mutNode(muleComponent.getType().concat(muleComponent.getConfigRef().getValue())) + asApikitNode(muleComponent.getType().concat(muleComponent.getConfigRef().getValue())) .add(Label.htmlLines("" + muleComponent.getType() + "", - muleComponent.getConfigRef().getValue())) - .add(Shape.DOUBLE_CIRCLE, Color.CYAN, Style.FILLED); + muleComponent.getConfigRef().getValue())); for (Component component1 : searchFlowBySuffix( ":" + muleComponent.getConfigRef().getValue(), drawingContext.getComponents())) { MutableNode node = mutNode(component1.qualifiedName()).add(Label.markdown(getNodeLabel(component1))); - asFlow.accept(node); + asFlow(node); apiKitNode.addLink(to(node).with(Style.SOLID)); } - flowNode - .addLink(to(apiKitNode).with(Style.SOLID, Label.of("(" + (componentIdx - 1) + ")"))); + flowNode.addLink(callSequenceLink(componentIdx - 1, apiKitNode)); } else { addSubNodes(flowNode, hasSource ? componentIdx - 1 : componentIdx, muleComponent, name); } @@ -194,7 +260,7 @@ MutableNode processComponent(Component component, DrawingContext drawingContext, mappedFlowKinds.add(name); } if (sourceNode != null) { - flowNode = sourceNode.add(Style.FILLED, Color.CYAN).addLink(to(flowNode).with(Style.BOLD)); + flowNode = sourceNode.addLink(to(flowNode).with(Style.BOLD)); } return flowNode; } @@ -206,13 +272,21 @@ private String getNodeLabel(Component component) { private void addSubNodes(MutableNode flowNode, int callSequence, MuleComponent muleComponent, String name) { if (muleComponent.isAsync()) { - flowNode.addLink(to(mutNode(name)).with(Style.DASHED.and(Style.BOLD), - Label.of("(" + callSequence + ") Async"), Color.BROWN)); + flowNode.addLink(asAsyncLink(callSequence, mutNode(name))); } else { - flowNode.addLink(to(mutNode(name)).with(Style.SOLID, Label.of("(" + callSequence + ")"))); + flowNode.addLink(callSequenceLink(callSequence, mutNode(name))); } } + Link callSequenceLink(int callSequence, MutableNode node) { + return to(node).with(Style.SOLID, Label.of("(" + callSequence + ")")); + } + + Link asAsyncLink(int callSequence, MutableNode node) { + return to(node).with(Style.DASHED.and(Style.BOLD), + Label.of("(" + callSequence + ") Async").external(), Color.LIGHTBLUE3); + } + @Override public boolean supports(DiagramType diagramType) { return DiagramType.GRAPH.equals(diagramType); diff --git a/src/test/java/com/javastreets/mulefd/drawings/GraphDiagramTest.java b/src/test/java/com/javastreets/mulefd/drawings/GraphDiagramTest.java index 9859055..6fd3c5f 100644 --- a/src/test/java/com/javastreets/mulefd/drawings/GraphDiagramTest.java +++ b/src/test/java/com/javastreets/mulefd/drawings/GraphDiagramTest.java @@ -191,7 +191,6 @@ void drawToValidateGraph_SingleFlow() throws Exception { MutableGraph generatedGraph = graphArgumentCaptor.getValue(); Graphviz.useEngine(new GraphvizV8Engine()); String jsonGraph = Graphviz.fromGraph(generatedGraph).render(Format.JSON).toString(); - System.out.println(jsonGraph); String ref = new String( Files.readAllBytes(Paths.get("src/test/resources/single-flow-generation-example.json"))); JSONAssert.assertEquals(ref, jsonGraph, JSONCompareMode.STRICT); @@ -313,16 +312,16 @@ void initNewGraph() { Mockito.when(graphDiagram.getDiagramHeaderLines()).thenReturn(new String[] {"Test"}); MutableGraph graph = mutGraph("mule").setDirected(true).linkAttrs() .add(VEE.dir(Arrow.DirType.FORWARD)).graphAttrs().add(Rank.dir(Rank.RankDir.LEFT_TO_RIGHT), - GraphAttr.splines(GraphAttr.SplineMode.SPLINE), GraphAttr.pad(2.0), GraphAttr.dpi(150), - Label.htmlLines("Test").locate(Label.Location.TOP)); - MutableGraph returnedGraph = graphDiagram.initNewGraph(); + GraphAttr.splines(GraphAttr.SplineMode.SPLINE), GraphAttr.pad(1, 0.5), + GraphAttr.dpi(150), Label.htmlLines("Test").locate(Label.Location.TOP)); + MutableGraph returnedGraph = graphDiagram.initNewGraph("Test"); assertThat(returnedGraph).isEqualTo(graph); } @Test void writGraphToFile() throws Exception { GraphDiagram graphDiagram = new GraphDiagram(); - MutableGraph graph = graphDiagram.initNewGraph(); + MutableGraph graph = graphDiagram.initNewGraph("Test"); boolean generated = graphDiagram.writGraphToFile(new File(tempDir, "test.png"), graph); assertThat(generated).isTrue(); } @@ -330,7 +329,7 @@ void writGraphToFile() throws Exception { @Test void writeFlowGraphWithFlow() { GraphDiagram graphDiagram = new GraphDiagram(); - MutableGraph graph = graphDiagram.initNewGraph(); + MutableGraph graph = graphDiagram.initNewGraph("Test"); FlowContainer flowContainer = new FlowContainer("flow", "test-flow"); flowContainer.addComponent(new MuleComponent("flow-ref", "test-sub-flow")); FlowContainer subflow = new FlowContainer("sub-flow", "test-sub-flow"); @@ -345,7 +344,7 @@ void writeFlowGraphWithFlow() { @Test void writeFlowGraphWithSubFlow() { GraphDiagram graphDiagram = new GraphDiagram(); - MutableGraph graph = graphDiagram.initNewGraph(); + MutableGraph graph = graphDiagram.initNewGraph("Test"); FlowContainer subflow = new FlowContainer("sub-flow", "test-sub-flow"); Path outputFilePath = Paths.get(tempDir.getAbsolutePath(), "dummy"); boolean written = graphDiagram.writeFlowGraph(subflow, outputFilePath, graph); diff --git a/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_APIKIT_Expected.json b/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_APIKIT_Expected.json index e41c14a..75f1634 100644 --- a/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_APIKIT_Expected.json +++ b/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_APIKIT_Expected.json @@ -16,7 +16,7 @@ }, { "op": "P", - "points": [[-144.000,-144.000],[-144.000,366.800],[1431.310,366.800],[1431.310,-144.000]] + "points": [[-72.000,-36.000],[-72.000,604.800],[1430.530,604.800],[1430.530,-36.000]] } ], "_ldraw_": @@ -33,43 +33,801 @@ }, { "op": "T", - "pt": [605.370,206.200], + "pt": [640.980,552.200], "align": "l", "width": 76.580, "text": "Test Diagram" } ], - "bb": "0,0,1287.3,222.8", + "bb": "0,0,1358.5,568.8", "dpi": "150", "label": "Test Diagram", "labelloc": "t", "lheight": "0.23", - "lp": "643.66,210.4", + "lp": "679.27,556.4", "lwidth": "1.06", - "pad": "2.0", + "pad": "1.0,0.5", "rankdir": "LR", "splines": "spline", "xdotversion": "1.7", - "_subgraph_cnt": 0, + "_subgraph_cnt": 3, "objects": [ { + "name": "cluster_legend", + "_draw_": + [ + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "p", + "points": [[26.000,8.000],[26.000,193.000],[555.360,193.000],[555.360,8.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [269.690,177.400], + "align": "l", + "width": 41.980, + "text": "Legend" + } + ], + "bb": "26,8,555.36,193", + "dpi": "150", + "label": "Legend<\/b>", + "labelloc": "t", + "lheight": "0.23", + "lp": "290.68,180.6", + "lwidth": "0.58", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "dashed", "_gvid": 0, + "nodes": [ + 3,4,5,6,7,8,9,10,11,12 + ], + "edges": [ + 0,1,2,3,4,5,6,7 + ] + }, + { + "name": "cluster_legend-space", + "bb": "8,201,168,289", + "dpi": "150", + "label": "", + "labelloc": "t", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 1, + "nodes": [ + 13 + ] + }, + { + "name": "cluster_mule", + "bb": "19.95,297,1350.5,536", + "dpi": "150", + "label": "Application graph", + "labelloc": "t", + "lheight": "0.23", + "lp": "685.24,523.6", + "lwidth": "1.41", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 2, + "nodes": [ + 14,15,16,17,18,19,20,21,22,23,24 + ], + "edges": [ + 8,9,10,11,12,13,14,15,16,17,18,19,20 + ] + }, + { + "_gvid": 3, + "name": "flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[124.000,160.000],[52.000,160.000],[52.000,142.000],[124.000,142.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,146.800], + "align": "c", + "width": 25.660, + "text": "flow" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,151", + "shape": "rectangle", + "width": "1" + }, + { + "_gvid": 4, + "name": "sub-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [281.160,151.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [281.160,146.800], + "align": "c", + "width": 49.760, + "text": "sub-flow" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "281.16,151", + "shape": "ellipse", + "width": "1" + }, + { + "_gvid": 5, + "name": "Unused sub\/-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "C", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "E", + "rect": [475.360,151.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [475.360,146.800], + "align": "c", + "width": 99.920, + "text": "Unused sub\/-flow" + } + ], + "color": "gray", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "475.36,151", + "style": "filled", + "width": "2" + }, + { + "_gvid": 6, + "name": "Flow A", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [88.000,115.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,110.800], + "align": "c", + "width": 42.390, + "text": "Flow A" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,115", + "width": "1" + }, + { + "_gvid": 7, + "name": "sub-flow-1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [281.160,115.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [281.160,110.800], + "align": "c", + "width": 61.420, + "text": "sub-flow-1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "281.16,115", + "width": "1.25" + }, + { + "_gvid": 8, + "name": "Flow C", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [88.000,79.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,74.800], + "align": "c", + "width": 41.620, + "text": "Flow C" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,79", + "width": "1" + }, + { + "_gvid": 9, + "name": "sub-flow-C1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [281.160,79.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [281.160,74.800], + "align": "c", + "width": 70.760, + "text": "sub-flow-C1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "281.16,79", + "width": "1.25" + }, + { + "_gvid": 10, + "name": "flow source", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "P", + "points": [[142.000,25.000],[115.000,34.000],[61.000,34.000],[34.000,25.000],[61.000,16.000],[115.000,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,20.800], + "align": "c", + "width": 65.690, + "text": "flow source" + } + ], + "color": "cyan", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,25", + "shape": "hexagon", + "sourceNode": "true", + "style": "filled", + "width": "1.5" + }, + { + "_gvid": 11, + "name": "flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[326.160,34.000],[236.160,34.000],[236.160,16.000],[326.160,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [281.160,20.800], + "align": "c", + "width": 74.240, + "text": "flow self-call" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "281.16,25", + "shape": "rectangle", + "width": "1.25" + }, + { + "_gvid": 12, + "name": "sub-flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [475.360,25.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [475.360,20.800], + "align": "c", + "width": 98.340, + "text": "sub-flow self-call" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "475.36,25", + "shape": "ellipse", + "width": "2" + }, + { + "_gvid": 13, + "name": "", + "height": "1", + "label": "\\N", + "pos": "88,245", + "shape": "none", + "width": "2" + }, + { + "_gvid": 14, "name": "http:\/api\/*", "_draw_": [ { "op": "c", "grad": "none", - "color": "#00ffff" - }, - { - "op": "C", - "grad": "none", - "color": "#00ffff" + "color": "#00ffff" + }, + { + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "P", + "points": [[127.200,450.000],[107.600,479.290],[68.400,479.290],[48.800,450.000],[68.400,420.710],[107.600,420.710]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [77.110,452.400], + "align": "l", + "width": 21.780, + "text": "http" + }, + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 0 + }, + { + "op": "T", + "pt": [72.060,438.400], + "align": "l", + "width": 31.890, + "text": "\/api\/*" + } + ], + "color": "cyan", + "height": "0.8165", + "label": "http<\/b>\/api\/*", + "pos": "88,450", + "shape": "hexagon", + "sourceNode": "true", + "style": "filled", + "width": "1.0861" + }, + { + "_gvid": 15, + "name": "flow:test-api-main", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[342.570,461.000],[219.750,461.000],[219.750,425.000],[342.570,425.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [227.710,439.800], + "align": "l", + "width": 25.660, + "text": "flow" + }, + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 0 + }, + { + "op": "T", + "pt": [253.360,439.800], + "align": "l", + "width": 81.250, + "text": ": test-api-main" + } + ], + "color": "blue", + "height": "0.5", + "label": "flow<\/b>: test-api-main", + "pos": "281.16,443", + "shape": "rectangle", + "width": "1.7071" + }, + { + "_gvid": 16, + "name": "apikittest-api-config", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "E", + "rect": [475.360,403.000,69.070,69.070] + }, + { + "op": "c", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "e", + "rect": [475.360,403.000,73.070,73.070] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [459.420,405.400], + "align": "l", + "width": 31.890, + "text": "apikit" + }, + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 0 + }, + { + "op": "T", + "pt": [434.540,391.400], + "align": "l", + "width": 81.630, + "text": "test-api-config" + } + ], + "color": "cyan", + "height": "2.0288", + "label": "apikit<\/b>test-api-config", + "pos": "475.36,403", + "shape": "doublecircle", + "style": "filled", + "width": "2.0288" + }, + { + "_gvid": 17, + "name": "flow:put:\\users\\(userId):test-api-config", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" }, { - "op": "P", - "points": [[99.250,135.000],[79.650,164.290],[40.450,164.290],[20.850,135.000],[40.450,105.710],[79.650,105.710]] + "op": "p", + "points": [[822.700,341.000],[585.300,341.000],[585.300,305.000],[822.700,305.000]] } ], "_ldraw_": @@ -90,10 +848,10 @@ }, { "op": "T", - "pt": [49.160,137.400], + "pt": [593.400,319.800], "align": "l", - "width": 21.780, - "text": "http" + "width": 25.660, + "text": "flow" }, { "op": "F", @@ -111,24 +869,22 @@ }, { "op": "T", - "pt": [44.110,123.400], + "pt": [619.050,319.800], "align": "l", - "width": 31.890, - "text": "\/api\/*" + "width": 195.540, + "text": ": put:\\users\\(userId):test-api-config" } ], - "color": "cyan", - "height": "0.8165", - "label": "http<\/b>\/api\/*", - "pos": "60.05,135", - "shape": "hexagon", - "sourceNode": "true", - "style": "filled", - "width": "1.0861" + "color": "blue", + "height": "0.5", + "label": "flow<\/b>: put:\\users\\(userId):test-api-config", + "pos": "704,323", + "shape": "rectangle", + "width": "3.2944" }, { - "_gvid": 1, - "name": "flow:test-api-main", + "_gvid": 18, + "name": "flow:get:\\users:test-api-config", "_draw_": [ { @@ -138,7 +894,7 @@ }, { "op": "p", - "points": [[287.350,147.000],[164.530,147.000],[164.530,111.000],[287.350,111.000]] + "points": [[798.220,395.000],[609.770,395.000],[609.770,359.000],[798.220,359.000]] } ], "_ldraw_": @@ -159,7 +915,7 @@ }, { "op": "T", - "pt": [172.480,125.800], + "pt": [617.880,373.800], "align": "l", "width": 25.660, "text": "flow" @@ -180,46 +936,99 @@ }, { "op": "T", - "pt": [198.140,125.800], + "pt": [643.540,373.800], "align": "l", - "width": 81.250, - "text": ": test-api-main" + "width": 146.560, + "text": ": get:\\users:test-api-config" } ], "color": "blue", "height": "0.5", - "label": "flow<\/b>: test-api-main", - "pos": "225.94,129", + "label": "flow<\/b>: get:\\users:test-api-config", + "pos": "704,377", "shape": "rectangle", - "width": "1.7071" + "width": "2.6142" }, { - "_gvid": 2, - "name": "apikittest-api-config", + "_gvid": 19, + "name": "flow:get:\\users\\(userId):test-api-config", "_draw_": [ { "op": "c", "grad": "none", - "color": "#00ffff" + "color": "#0000ff" }, { - "op": "C", + "op": "p", + "points": [[822.410,449.000],[585.580,449.000],[585.580,413.000],[822.410,413.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", "grad": "none", - "color": "#00ffff" + "color": "#000000" }, { - "op": "E", - "rect": [420.140,91.000,69.070,69.070] + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [593.790,427.800], + "align": "l", + "width": 25.660, + "text": "flow" + }, + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" }, { "op": "c", "grad": "none", - "color": "#00ffff" + "color": "#000000" }, { - "op": "e", - "rect": [420.140,91.000,73.070,73.070] + "op": "t", + "fontchar": 0 + }, + { + "op": "T", + "pt": [619.450,427.800], + "align": "l", + "width": 194.760, + "text": ": get:\\users\\(userId):test-api-config" + } + ], + "color": "blue", + "height": "0.5", + "label": "flow<\/b>: get:\\users\\(userId):test-api-config", + "pos": "704,431", + "shape": "rectangle", + "width": "3.2835" + }, + { + "_gvid": 20, + "name": "flow:post:\\users:test-api-config", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[801.450,503.000],[606.540,503.000],[606.540,467.000],[801.450,467.000]] } ], "_ldraw_": @@ -240,10 +1049,10 @@ }, { "op": "T", - "pt": [404.190,93.400], + "pt": [614.770,481.800], "align": "l", - "width": 31.890, - "text": "apikit" + "width": 25.660, + "text": "flow" }, { "op": "F", @@ -261,33 +1070,37 @@ }, { "op": "T", - "pt": [379.320,79.400], + "pt": [640.430,481.800], "align": "l", - "width": 81.630, - "text": "test-api-config" + "width": 152.790, + "text": ": post:\\users:test-api-config" } ], - "color": "cyan", - "height": "2.0288", - "label": "apikit<\/b>test-api-config", - "pos": "420.14,91", - "shape": "doublecircle", - "style": "filled", - "width": "2.0288" + "color": "blue", + "height": "0.5", + "label": "flow<\/b>: post:\\users:test-api-config", + "pos": "704,485", + "shape": "rectangle", + "width": "2.7007" }, { - "_gvid": 3, - "name": "flow:put:\\users\\(userId):test-api-config", + "_gvid": 21, + "name": "http:\/console\/*", "_draw_": [ { "op": "c", "grad": "none", - "color": "#0000ff" + "color": "#00ffff" }, { - "op": "p", - "points": [[767.470,198.000],[530.070,198.000],[530.070,162.000],[767.470,162.000]] + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "P", + "points": [[148.100,373.000],[118.050,402.290],[57.950,402.290],[27.900,373.000],[57.950,343.710],[118.050,343.710]] } ], "_ldraw_": @@ -308,10 +1121,10 @@ }, { "op": "T", - "pt": [538.170,176.800], + "pt": [77.110,375.400], "align": "l", - "width": 25.660, - "text": "flow" + "width": 21.780, + "text": "http" }, { "op": "F", @@ -329,22 +1142,24 @@ }, { "op": "T", - "pt": [563.830,176.800], + "pt": [59.230,361.400], "align": "l", - "width": 195.540, - "text": ": put:\\users\\(userId):test-api-config" + "width": 57.550, + "text": "\/console\/*" } ], - "color": "blue", - "height": "0.5", - "label": "flow<\/b>: put:\\users\\(userId):test-api-config", - "pos": "648.77,180", - "shape": "rectangle", - "width": "3.2944" + "color": "cyan", + "height": "0.8165", + "label": "http<\/b>\/console\/*", + "pos": "88,373", + "shape": "hexagon", + "sourceNode": "true", + "style": "filled", + "width": "1.668" }, { - "_gvid": 4, - "name": "flow:get:\\users:test-api-config", + "_gvid": 22, + "name": "flow:test-api-console", "_draw_": [ { @@ -354,7 +1169,7 @@ }, { "op": "p", - "points": [[743.000,144.000],[554.550,144.000],[554.550,108.000],[743.000,108.000]] + "points": [[349.840,398.000],[212.480,398.000],[212.480,362.000],[349.840,362.000]] } ], "_ldraw_": @@ -375,7 +1190,7 @@ }, { "op": "T", - "pt": [562.660,122.800], + "pt": [220.320,376.800], "align": "l", "width": 25.660, "text": "flow" @@ -396,32 +1211,32 @@ }, { "op": "T", - "pt": [588.320,122.800], + "pt": [245.980,376.800], "align": "l", - "width": 146.560, - "text": ": get:\\users:test-api-config" + "width": 96.020, + "text": ": test-api-console" } ], "color": "blue", "height": "0.5", - "label": "flow<\/b>: get:\\users:test-api-config", - "pos": "648.77,126", + "label": "flow<\/b>: test-api-console", + "pos": "281.16,380", "shape": "rectangle", - "width": "2.6142" + "width": "1.9122" }, { - "_gvid": 5, - "name": "flow:get:\\users\\(userId):test-api-config", + "_gvid": 23, + "name": "sub-flow:test-sub-flow", "_draw_": [ { "op": "c", "grad": "none", - "color": "#0000ff" + "color": "#000000" }, { - "op": "p", - "points": [[767.190,90.000],[530.360,90.000],[530.360,54.000],[767.190,54.000]] + "op": "e", + "rect": [976.330,403.000,101.320,18.000] } ], "_ldraw_": @@ -442,10 +1257,10 @@ }, { "op": "T", - "pt": [538.570,68.800], + "pt": [910.820,399.800], "align": "l", - "width": 25.660, - "text": "flow" + "width": 49.760, + "text": "sub-flow" }, { "op": "F", @@ -463,32 +1278,32 @@ }, { "op": "T", - "pt": [564.220,68.800], + "pt": [960.580,399.800], "align": "l", - "width": 194.760, - "text": ": get:\\users\\(userId):test-api-config" + "width": 81.250, + "text": ": test-sub-flow" } ], - "color": "blue", + "color": "black", "height": "0.5", - "label": "flow<\/b>: get:\\users\\(userId):test-api-config", - "pos": "648.77,72", - "shape": "rectangle", - "width": "3.2835" + "label": "sub-flow<\/b>: test-sub-flow", + "pos": "976.33,403", + "shape": "ellipse", + "width": "2.8169" }, { - "_gvid": 6, - "name": "flow:post:\\users:test-api-config", + "_gvid": 24, + "name": "sub-flow:test-sub-flow1", "_draw_": [ { "op": "c", "grad": "none", - "color": "#0000ff" + "color": "#000000" }, { - "op": "p", - "points": [[746.230,36.000],[551.320,36.000],[551.320,0.000],[746.230,0.000]] + "op": "e", + "rect": [1236.300,403.000,106.480,18.000] } ], "_ldraw_": @@ -509,10 +1324,10 @@ }, { "op": "T", - "pt": [559.550,14.800], + "pt": [1167.290,399.800], "align": "l", - "width": 25.660, - "text": "flow" + "width": 49.760, + "text": "sub-flow" }, { "op": "F", @@ -530,37 +1345,80 @@ }, { "op": "T", - "pt": [585.210,14.800], + "pt": [1217.050,399.800], "align": "l", - "width": 152.790, - "text": ": post:\\users:test-api-config" + "width": 88.250, + "text": ": test-sub-flow1" + } + ], + "color": "black", + "height": "0.5", + "label": "sub-flow<\/b>: test-sub-flow1", + "pos": "1236.3,403", + "shape": "ellipse", + "width": "2.9511" + } + ], + "edges": [ + { + "_gvid": 0, + "tail": 3, + "head": 4, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,245,151 124.06,151 155.22,151 200.96,151 234.88,151", + "style": "invis" + }, + { + "_gvid": 1, + "tail": 4, + "head": 5, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,403.1,151 317.41,151 338.65,151 366.62,151 393.06,151", + "style": "invis" + }, + { + "_gvid": 2, + "tail": 6, + "head": 7, + "_draw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[124.060,115.000],[152.460,115.000],[192.970,115.000],[225.610,115.000]] } ], - "color": "blue", - "height": "0.5", - "label": "flow<\/b>: post:\\users:test-api-config", - "pos": "648.77,18", - "shape": "rectangle", - "width": "2.7007" - }, - { - "_gvid": 7, - "name": "http:\/console\/*", - "_draw_": + "_hdraw_": [ + { + "op": "S", + "style": "solid" + }, { "op": "c", "grad": "none", - "color": "#00ffff" + "color": "#000000" }, { "op": "C", "grad": "none", - "color": "#00ffff" + "color": "#000000" }, { "op": "P", - "points": [[120.150,58.000],[90.100,87.290],[30.000,87.290],[-0.050,58.000],[30.000,28.710],[90.100,28.710]] + "points": [[235.900,115.000],[225.900,119.500],[230.900,115.000],[225.900,115.000],[225.900,115.000],[225.900,115.000],[230.900,115.000],[225.900,110.500],[235.900,115.000]] } ], "_ldraw_": @@ -575,17 +1433,16 @@ "grad": "none", "color": "#000000" }, - { - "op": "t", - "fontchar": 1 - }, { "op": "T", - "pt": [49.160,60.400], - "align": "l", - "width": 21.780, - "text": "http" - }, + "pt": [186.160,119.200], + "align": "c", + "width": 16.320, + "text": "(1)" + } + ], + "_tldraw_": + [ { "op": "F", "size": 14.000, @@ -596,40 +1453,72 @@ "grad": "none", "color": "#000000" }, - { - "op": "t", - "fontchar": 0 - }, { "op": "T", - "pt": [31.280,46.400], - "align": "l", - "width": 57.550, - "text": "\/console\/*" + "pt": [203.760,103.830], + "align": "c", + "width": 80.470, + "text": "Call Sequence" } ], - "color": "cyan", - "height": "0.8165", - "label": "http<\/b>\/console\/*", - "pos": "60.05,58", - "shape": "hexagon", - "sourceNode": "true", - "style": "filled", - "width": "1.668" + "arrowhead": "vee", + "dir": "forward", + "label": "(1)", + "labelangle": "-5.0", + "labeldistance": "8.0", + "lp": "186.16,123.4", + "pos": "e,235.9,115 124.06,115 152.46,115 192.97,115 225.61,115", + "style": "solid", + "tail_lp": "203.76,108.03", + "taillabel": "Call Sequence\\n" }, { - "_gvid": 8, - "name": "flow:test-api-console", + "_gvid": 3, + "tail": 8, + "head": 9, "_draw_": [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "b", + "points": [[124.060,79.000],[152.460,79.000],[192.970,79.000],[225.610,79.000]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "solid" + }, { "op": "c", "grad": "none", - "color": "#0000ff" + "color": "#9ac0cd" }, { - "op": "p", - "points": [[294.620,82.000],[157.260,82.000],[157.260,46.000],[294.620,46.000]] + "op": "C", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "P", + "points": [[235.900,79.000],[225.900,83.500],[230.900,79.500],[225.900,79.500],[225.900,79.000],[225.900,78.500],[230.900,78.500],[225.900,74.500],[235.900,79.000]] } ], "_ldraw_": @@ -644,17 +1533,16 @@ "grad": "none", "color": "#000000" }, - { - "op": "t", - "fontchar": 1 - }, { "op": "T", - "pt": [165.100,60.800], - "align": "l", - "width": 25.660, - "text": "flow" - }, + "pt": [152.550,83.200], + "align": "c", + "width": 55.590, + "text": "(1) Async" + } + ], + "_tldraw_": + [ { "op": "F", "size": 14.000, @@ -665,28 +1553,41 @@ "grad": "none", "color": "#000000" }, - { - "op": "t", - "fontchar": 0 - }, { "op": "T", - "pt": [190.760,60.800], - "align": "l", - "width": 96.020, - "text": ": test-api-console" + "pt": [203.760,67.830], + "align": "c", + "width": 104.580, + "text": "Asynchronous call" } ], - "color": "blue", - "height": "0.5", - "label": "flow<\/b>: test-api-console", - "pos": "225.94,64", - "shape": "rectangle", - "width": "1.9122" + "arrowhead": "vee", + "color": "lightblue3", + "dir": "forward", + "label": "", + "labelangle": "-5.0", + "labeldistance": "8.0", + "pos": "e,235.9,79 124.06,79 152.46,79 192.97,79 225.61,79", + "style": "dashed,bold", + "tail_lp": "203.76,72.028", + "taillabel": "Asynchronous call\\n", + "xlabel": "(1) Async", + "xlp": "152.55,87.4" }, { - "_gvid": 9, - "name": "sub-flow:test-sub-flow", + "_gvid": 4, + "tail": 10, + "head": 11, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,235.91,25 142.25,25 168.29,25 199.58,25 225.77,25", + "style": "invis" + }, + { + "_gvid": 5, + "tail": 11, + "head": 11, "_draw_": [ { @@ -695,16 +1596,15 @@ "color": "#000000" }, { - "op": "e", - "rect": [921.100,95.000,101.320,18.000] + "op": "b", + "points": [[266.910,34.130],[259.520,42.700],[264.270,52.000],[281.160,52.000],[291.450,52.000],[297.240,48.550],[298.510,43.910]] } ], - "_ldraw_": + "_hdraw_": [ { - "op": "F", - "size": 14.000, - "face": "Times-Roman" + "op": "S", + "style": "solid" }, { "op": "c", @@ -712,48 +1612,34 @@ "color": "#000000" }, { - "op": "t", - "fontchar": 1 - }, - { - "op": "T", - "pt": [855.600,91.800], - "align": "l", - "width": 49.760, - "text": "sub-flow" - }, - { - "op": "F", - "size": 14.000, - "face": "Times-Roman" - }, - { - "op": "c", + "op": "C", "grad": "none", "color": "#000000" }, { - "op": "t", - "fontchar": 0 - }, - { - "op": "T", - "pt": [905.360,91.800], - "align": "l", - "width": 81.250, - "text": ": test-sub-flow" + "op": "P", + "points": [[295.410,34.130],[302.730,42.300],[296.920,38.890],[298.440,43.660],[298.440,43.660],[298.440,43.660],[296.920,38.890],[294.150,45.020],[295.410,34.130]] } ], - "color": "black", - "height": "0.5", - "label": "sub-flow<\/b>: test-sub-flow", - "pos": "921.1,95", - "shape": "ellipse", - "width": "2.8169" + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,295.41,34.129 266.91,34.129 259.52,42.701 264.27,52 281.16,52 291.45,52 297.24,48.547 298.51,43.91" }, { - "_gvid": 10, - "name": "sub-flow:test-sub-flow1", + "_gvid": 6, + "tail": 11, + "head": 12, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,403.35,25 326.26,25 346.14,25 370.28,25 393.25,25", + "style": "invis" + }, + { + "_gvid": 7, + "tail": 12, + "head": 12, "_draw_": [ { @@ -762,16 +1648,15 @@ "color": "#000000" }, { - "op": "e", - "rect": [1181.070,95.000,106.480,18.000] + "op": "b", + "points": [[461.950,33.850],[454.540,42.500],[459.010,52.000],[475.360,52.000],[485.580,52.000],[491.150,48.290],[492.090,43.390]] } ], - "_ldraw_": + "_hdraw_": [ { - "op": "F", - "size": 14.000, - "face": "Times-Roman" + "op": "S", + "style": "solid" }, { "op": "c", @@ -779,51 +1664,24 @@ "color": "#000000" }, { - "op": "t", - "fontchar": 1 - }, - { - "op": "T", - "pt": [1112.070,91.800], - "align": "l", - "width": 49.760, - "text": "sub-flow" - }, - { - "op": "F", - "size": 14.000, - "face": "Times-Roman" - }, - { - "op": "c", + "op": "C", "grad": "none", "color": "#000000" }, { - "op": "t", - "fontchar": 0 - }, - { - "op": "T", - "pt": [1161.830,91.800], - "align": "l", - "width": 88.250, - "text": ": test-sub-flow1" + "op": "P", + "points": [[488.770,33.850],[496.310,41.810],[490.410,38.570],[492.060,43.290],[492.060,43.290],[492.060,43.290],[490.410,38.570],[487.810,44.770],[488.770,33.850]] } ], - "color": "black", - "height": "0.5", - "label": "sub-flow<\/b>: test-sub-flow1", - "pos": "1181.1,95", - "shape": "ellipse", - "width": "2.9511" - } - ], - "edges": [ + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,488.77,33.85 461.95,33.85 454.54,42.498 459.01,52 475.36,52 485.58,52 491.15,48.288 492.09,43.393" + }, { - "_gvid": 0, - "tail": 0, - "head": 1, + "_gvid": 8, + "tail": 14, + "head": 15, "_draw_": [ { @@ -837,7 +1695,7 @@ }, { "op": "b", - "points": [[98.650,133.620],[115.150,133.020],[135.090,132.290],[154.190,131.590]] + "points": [[126.310,448.630],[149.920,447.770],[181.210,446.620],[209.400,445.590]] } ], "_hdraw_": @@ -862,19 +1720,19 @@ }, { "op": "P", - "points": [[164.390,131.220],[154.560,136.080],[159.410,131.900],[154.420,132.080],[154.400,131.580],[154.380,131.080],[159.380,130.900],[154.230,127.090],[164.390,131.220]] + "points": [[219.620,445.220],[209.790,450.080],[214.640,445.900],[209.650,446.080],[209.630,445.580],[209.610,445.080],[214.610,444.900],[209.470,441.090],[219.620,445.220]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,164.39,131.22 98.649,133.62 115.15,133.02 135.09,132.29 154.19,131.59", + "pos": "e,219.62,445.22 126.31,448.63 149.92,447.77 181.21,446.62 209.4,445.59", "style": "bold" }, { - "_gvid": 1, - "tail": 1, - "head": 2, + "_gvid": 9, + "tail": 15, + "head": 16, "_draw_": [ { @@ -888,7 +1746,7 @@ }, { "op": "b", - "points": [[287.490,117.030],[303.580,113.850],[321.230,110.360],[338.230,107.000]] + "points": [[342.710,430.400],[358.900,427.030],[376.650,423.330],[393.740,419.780]] } ], "_hdraw_": @@ -909,7 +1767,7 @@ }, { "op": "P", - "points": [[348.140,105.040],[339.200,111.390],[343.240,106.010],[338.330,106.980],[338.330,106.980],[338.330,106.980],[343.240,106.010],[337.460,102.560],[348.140,105.040]] + "points": [[403.700,417.700],[394.830,424.150],[398.810,418.720],[393.910,419.740],[393.910,419.740],[393.910,419.740],[398.810,418.720],[393.000,415.340],[403.700,417.700]] } ], "_ldraw_": @@ -926,7 +1784,7 @@ }, { "op": "T", - "pt": [320.940,115.200], + "pt": [376.160,428.200], "align": "c", "width": 16.320, "text": "(1)" @@ -935,14 +1793,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "320.94,119.4", - "pos": "e,348.14,105.04 287.49,117.03 303.58,113.85 321.23,110.36 338.23,107", + "lp": "376.16,432.4", + "pos": "e,403.7,417.7 342.71,430.4 358.9,427.03 376.65,423.33 393.74,419.78", "style": "solid" }, { - "_gvid": 2, - "tail": 2, - "head": 3, + "_gvid": 10, + "tail": 16, + "head": 17, "_draw_": [ { @@ -956,7 +1814,7 @@ }, { "op": "b", - "points": [[482.150,129.820],[497.410,138.360],[514.040,146.720],[530.170,153.000],[535.680,155.140],[541.390,157.140],[547.210,159.000]] + "points": [[540.190,368.990],[554.780,362.060],[570.410,355.290],[585.400,350.000],[591.630,347.800],[598.120,345.730],[604.700,343.800]] } ], "_hdraw_": @@ -977,19 +1835,19 @@ }, { "op": "P", - "points": [[557.070,162.000],[546.200,163.400],[552.290,160.550],[547.500,159.090],[547.500,159.090],[547.500,159.090],[552.290,160.550],[548.810,154.780],[557.070,162.000]] + "points": [[614.400,341.060],[606.000,348.110],[609.590,342.420],[604.770,343.780],[604.770,343.780],[604.770,343.780],[609.590,342.420],[603.550,339.450],[614.400,341.060]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,557.07,162 482.15,129.82 497.41,138.36 514.04,146.72 530.17,153 535.68,155.14 541.39,157.14 547.21,159", + "pos": "e,614.4,341.06 540.19,368.99 554.78,362.06 570.41,355.29 585.4,350 591.63,347.8 598.12,345.73 604.7,343.8", "style": "solid" }, { - "_gvid": 3, - "tail": 2, - "head": 4, + "_gvid": 11, + "tail": 16, + "head": 18, "_draw_": [ { @@ -1003,7 +1861,7 @@ }, { "op": "b", - "points": [[492.540,102.030],[508.910,104.560],[526.650,107.290],[544.080,109.990]] + "points": [[548.070,394.770],[564.440,392.900],[582.150,390.860],[599.550,388.870]] } ], "_hdraw_": @@ -1024,19 +1882,19 @@ }, { "op": "P", - "points": [[554.300,111.560],[543.730,114.490],[549.360,110.800],[544.420,110.040],[544.420,110.040],[544.420,110.040],[549.360,110.800],[545.100,105.590],[554.300,111.560]] + "points": [[609.750,387.700],[600.330,393.310],[604.780,388.270],[599.820,388.840],[599.820,388.840],[599.820,388.840],[604.780,388.270],[599.300,384.370],[609.750,387.700]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,554.3,111.56 492.54,102.03 508.91,104.56 526.65,107.29 544.08,109.99", + "pos": "e,609.75,387.7 548.07,394.77 564.44,392.9 582.15,390.86 599.55,388.87", "style": "solid" }, { - "_gvid": 4, - "tail": 2, - "head": 5, + "_gvid": 12, + "tail": 16, + "head": 19, "_draw_": [ { @@ -1050,7 +1908,7 @@ }, { "op": "b", - "points": [[493.160,84.960],[501.910,84.230],[511.050,83.460],[520.320,82.690]] + "points": [[548.070,411.860],[556.920,412.950],[566.180,414.100],[575.560,415.260]] } ], "_hdraw_": @@ -1071,19 +1929,19 @@ }, { "op": "P", - "points": [[530.410,81.840],[520.820,87.160],[525.430,82.260],[520.450,82.670],[520.450,82.670],[520.450,82.670],[525.430,82.260],[520.070,78.190],[530.410,81.840]] + "points": [[585.780,416.520],[575.300,419.760],[580.810,415.910],[575.850,415.290],[575.850,415.290],[575.850,415.290],[580.810,415.910],[576.400,410.830],[585.780,416.520]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,530.41,81.839 493.16,84.962 501.91,84.228 511.05,83.462 520.32,82.685", + "pos": "e,585.78,416.52 548.07,411.86 556.92,412.95 566.18,414.1 575.56,415.26", "style": "solid" }, { - "_gvid": 5, - "tail": 2, - "head": 6, + "_gvid": 13, + "tail": 16, + "head": 20, "_draw_": [ { @@ -1097,7 +1955,7 @@ }, { "op": "b", - "points": [[487.040,61.040],[501.110,55.250],[516.000,49.580],[530.170,45.000],[537.030,42.790],[544.160,40.680],[551.370,38.690]] + "points": [[539.500,438.080],[554.260,445.370],[570.140,452.490],[585.400,458.000],[591.410,460.170],[597.660,462.210],[604.000,464.110]] } ], "_hdraw_": @@ -1118,19 +1976,19 @@ }, { "op": "P", - "points": [[561.240,36.060],[552.740,42.990],[556.410,37.350],[551.580,38.640],[551.580,38.640],[551.580,38.640],[556.410,37.350],[550.420,34.290],[561.240,36.060]] + "points": [[614.030,466.990],[603.180,468.560],[609.230,465.610],[604.420,464.230],[604.420,464.230],[604.420,464.230],[609.230,465.610],[605.670,459.910],[614.030,466.990]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,561.24,36.058 487.04,61.036 501.11,55.253 516,49.579 530.17,45 537.03,42.787 544.16,40.681 551.37,38.693", + "pos": "e,614.03,466.99 539.5,438.08 554.26,445.37 570.14,452.49 585.4,458 591.41,460.17 597.66,462.21 604,464.11", "style": "solid" }, { - "_gvid": 6, - "tail": 3, - "head": 9, + "_gvid": 14, + "tail": 17, + "head": 23, "_draw_": [ { @@ -1144,7 +2002,7 @@ }, { "op": "b", - "points": [[734.610,161.990],[745.690,159.210],[756.850,156.190],[767.370,153.000],[802.770,142.270],[841.730,127.430],[871.440,115.440]] + "points": [[788.800,341.070],[800.210,343.870],[811.720,346.880],[822.600,350.000],[856.280,359.680],[893.450,372.530],[922.680,383.150]] } ], "_hdraw_": @@ -1165,7 +2023,7 @@ }, { "op": "P", - "points": [[880.750,111.660],[873.180,119.590],[876.110,113.540],[871.480,115.420],[871.480,115.420],[871.480,115.420],[876.110,113.540],[869.790,111.250],[880.750,111.660]] + "points": [[932.280,386.660],[921.340,387.450],[927.580,384.940],[922.890,383.220],[922.890,383.220],[922.890,383.220],[927.580,384.940],[924.430,379.000],[932.280,386.660]] } ], "_ldraw_": @@ -1182,7 +2040,7 @@ }, { "op": "T", - "pt": [793.530,150.200], + "pt": [848.760,364.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1191,14 +2049,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "793.53,154.4", - "pos": "e,880.75,111.66 734.61,161.99 745.69,159.21 756.85,156.19 767.37,153 802.77,142.27 841.73,127.43 871.44,115.44", + "lp": "848.76,368.4", + "pos": "e,932.28,386.66 788.8,341.07 800.21,343.87 811.72,346.88 822.6,350 856.28,359.68 893.45,372.53 922.68,383.15", "style": "solid" }, { - "_gvid": 7, - "tail": 4, - "head": 9, + "_gvid": 15, + "tail": 18, + "head": 23, "_draw_": [ { @@ -1212,7 +2070,7 @@ }, { "op": "b", - "points": [[743.180,115.290],[769.710,112.250],[798.610,108.930],[825.220,105.880]] + "points": [[798.260,383.120],[817.660,384.610],[837.970,386.320],[856.920,388.200],[865.850,389.090],[875.150,390.100],[884.440,391.160]] } ], "_hdraw_": @@ -1233,7 +2091,7 @@ }, { "op": "P", - "points": [[835.300,104.730],[825.880,110.340],[830.330,105.290],[825.360,105.860],[825.360,105.860],[825.360,105.860],[830.330,105.290],[824.850,101.390],[835.300,104.730]] + "points": [[894.490,392.340],[884.040,395.650],[889.530,391.760],[884.560,391.180],[884.560,391.180],[884.560,391.180],[889.530,391.760],[885.090,386.710],[894.490,392.340]] } ], "_ldraw_": @@ -1250,7 +2108,7 @@ }, { "op": "T", - "pt": [793.530,113.200], + "pt": [848.760,392.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1259,14 +2117,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "793.53,117.4", - "pos": "e,835.3,104.73 743.18,115.29 769.71,112.25 798.61,108.93 825.22,105.88", + "lp": "848.76,396.4", + "pos": "e,894.49,392.34 798.26,383.12 817.66,384.61 837.97,386.32 856.92,388.2 865.85,389.09 875.15,390.1 884.44,391.16", "style": "solid" }, { - "_gvid": 8, - "tail": 5, - "head": 9, + "_gvid": 16, + "tail": 19, + "head": 23, "_draw_": [ { @@ -1280,7 +2138,7 @@ }, { "op": "b", - "points": [[767.160,80.350],[778.830,81.270],[790.500,82.230],[801.690,83.200],[808.470,83.790],[815.460,84.420],[822.500,85.070]] + "points": [[822.390,418.840],[840.940,416.920],[859.940,414.950],[877.970,413.080]] } ], "_hdraw_": @@ -1301,7 +2159,7 @@ }, { "op": "P", - "points": [[832.830,86.050],[822.450,89.590],[827.850,85.580],[822.870,85.110],[822.870,85.110],[822.870,85.110],[827.850,85.580],[823.300,80.630],[832.830,86.050]] + "points": [[888.160,412.030],[878.680,417.530],[883.190,412.540],[878.220,413.060],[878.220,413.060],[878.220,413.060],[883.190,412.540],[877.750,408.580],[888.160,412.030]] } ], "_ldraw_": @@ -1318,7 +2176,7 @@ }, { "op": "T", - "pt": [793.530,87.200], + "pt": [848.760,420.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1327,14 +2185,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "793.53,91.4", - "pos": "e,832.83,86.046 767.16,80.351 778.83,81.272 790.5,82.229 801.69,83.2 808.47,83.787 815.46,84.419 822.5,85.073", + "lp": "848.76,424.4", + "pos": "e,888.16,412.03 822.39,418.84 840.94,416.92 859.94,414.95 877.97,413.08", "style": "solid" }, { - "_gvid": 9, - "tail": 6, - "head": 9, + "_gvid": 17, + "tail": 20, + "head": 23, "_draw_": [ { @@ -1348,7 +2206,7 @@ }, { "op": "b", - "points": [[732.570,36.020],[744.300,38.860],[756.170,41.890],[767.370,45.000],[800.100,54.090],[836.240,65.850],[865.140,75.670]] + "points": [[789.150,466.970],[800.450,464.180],[811.840,461.160],[822.600,458.000],[856.970,447.900],[894.870,434.270],[924.320,423.110]] } ], "_hdraw_": @@ -1369,7 +2227,7 @@ }, { "op": "P", - "points": [[874.650,78.920],[863.740,79.940],[869.920,77.300],[865.190,75.690],[865.190,75.690],[865.190,75.690],[869.920,77.300],[866.650,71.430],[874.650,78.920]] + "points": [[933.960,419.420],[926.220,427.190],[929.290,421.210],[924.620,422.990],[924.620,422.990],[924.620,422.990],[929.290,421.210],[923.010,418.790],[933.960,419.420]] } ], "_ldraw_": @@ -1386,7 +2244,7 @@ }, { "op": "T", - "pt": [793.530,59.200], + "pt": [848.760,455.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1395,14 +2253,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "793.53,63.4", - "pos": "e,874.65,78.922 732.57,36.015 744.3,38.855 756.17,41.887 767.37,45 800.1,54.093 836.24,65.845 865.14,75.671", + "lp": "848.76,459.4", + "pos": "e,933.96,419.42 789.15,466.97 800.45,464.18 811.84,461.16 822.6,458 856.97,447.9 894.87,434.27 924.32,423.11", "style": "solid" }, { - "_gvid": 10, - "tail": 7, - "head": 8, + "_gvid": 18, + "tail": 21, + "head": 22, "_draw_": [ { @@ -1416,7 +2274,7 @@ }, { "op": "b", - "points": [[118.370,60.100],[127.690,60.440],[137.470,60.800],[147.180,61.150]] + "points": [[146.100,375.090],[163.720,375.740],[183.440,376.460],[202.220,377.150]] } ], "_hdraw_": @@ -1441,19 +2299,19 @@ }, { "op": "P", - "points": [[157.240,61.520],[147.090,65.650],[152.230,61.840],[147.230,61.660],[147.250,61.160],[147.270,60.660],[152.270,60.840],[147.420,56.660],[157.240,61.520]] + "points": [[212.240,377.510],[202.080,381.640],[207.220,377.830],[202.230,377.650],[202.250,377.150],[202.260,376.650],[207.260,376.830],[202.410,372.650],[212.240,377.510]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,157.24,61.522 118.37,60.099 127.69,60.44 137.47,60.798 147.18,61.153", + "pos": "e,212.24,377.51 146.1,375.09 163.72,375.74 183.44,376.46 202.22,377.15", "style": "bold" }, { - "_gvid": 11, - "tail": 8, - "head": 2, + "_gvid": 19, + "tail": 22, + "head": 16, "_draw_": [ { @@ -1467,7 +2325,7 @@ }, { "op": "b", - "points": [[294.880,70.830],[306.320,72.160],[318.060,73.630],[329.100,75.200],[331.970,75.610],[334.890,76.040],[337.840,76.490]] + "points": [[349.880,381.210],[361.400,381.870],[373.220,382.820],[384.320,384.200],[387.390,384.580],[390.510,385.010],[393.660,385.480]] } ], "_hdraw_": @@ -1488,7 +2346,7 @@ }, { "op": "P", - "points": [[347.940,78.070],[337.370,80.970],[343.000,77.300],[338.060,76.520],[338.060,76.520],[338.060,76.520],[343.000,77.300],[338.760,72.080],[347.940,78.070]] + "points": [[403.770,387.110],[393.180,389.960],[398.830,386.320],[393.900,385.520],[393.900,385.520],[393.900,385.520],[398.830,386.320],[394.610,381.080],[403.770,387.110]] } ], "_ldraw_": @@ -1505,7 +2363,7 @@ }, { "op": "T", - "pt": [320.940,80.200], + "pt": [376.160,388.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1514,14 +2372,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "320.94,84.4", - "pos": "e,347.94,78.069 294.88,70.829 306.32,72.156 318.06,73.628 329.1,75.2 331.97,75.609 334.89,76.04 337.84,76.488", + "lp": "376.16,392.4", + "pos": "e,403.77,387.11 349.88,381.21 361.4,381.87 373.22,382.82 384.32,384.2 387.39,384.58 390.51,385.01 393.66,385.48", "style": "solid" }, { - "_gvid": 12, - "tail": 9, - "head": 10, + "_gvid": 20, + "tail": 23, + "head": 24, "_draw_": [ { @@ -1535,7 +2393,7 @@ }, { "op": "b", - "points": [[1022.580,95.000],[1036.360,95.000],[1050.590,95.000],[1064.600,95.000]] + "points": [[1077.800,403.000],[1091.580,403.000],[1105.810,403.000],[1119.830,403.000]] } ], "_hdraw_": @@ -1556,7 +2414,7 @@ }, { "op": "P", - "points": [[1074.760,95.000],[1064.760,99.500],[1069.760,95.000],[1064.760,95.000],[1064.760,95.000],[1064.760,95.000],[1069.760,95.000],[1064.760,90.500],[1074.760,95.000]] + "points": [[1129.980,403.000],[1119.980,407.500],[1124.980,403.000],[1119.980,403.000],[1119.980,403.000],[1119.980,403.000],[1124.980,403.000],[1119.980,398.500],[1129.980,403.000]] } ], "_ldraw_": @@ -1573,7 +2431,7 @@ }, { "op": "T", - "pt": [1048.680,99.200], + "pt": [1103.900,407.200], "align": "c", "width": 16.320, "text": "(1)" @@ -1582,8 +2440,8 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "1048.7,103.4", - "pos": "e,1074.8,95 1022.6,95 1036.4,95 1050.6,95 1064.6,95", + "lp": "1103.9,411.4", + "pos": "e,1130,403 1077.8,403 1091.6,403 1105.8,403 1119.8,403", "style": "solid" } ] diff --git a/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_Expected.json b/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_Expected.json index cc79de8..a56ea6d 100644 --- a/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_Expected.json +++ b/src/test/java/com/javastreets/mulefd/drawings/drawToValidateGraph_Expected.json @@ -16,7 +16,7 @@ }, { "op": "P", - "points": [[-144.000,-144.000],[-144.000,234.190],[628.370,234.190],[628.370,-144.000]] + "points": [[-72.000,-36.000],[-72.000,464.800],[654.270,464.800],[654.270,-36.000]] } ], "_ldraw_": @@ -33,27 +33,567 @@ }, { "op": "T", - "pt": [203.890,73.590], + "pt": [252.840,412.200], "align": "l", "width": 76.580, "text": "Test Diagram" } ], - "bb": "0,0,484.37,90.194", + "bb": "0,0,582.27,428.8", "dpi": "150", "label": "Test Diagram", "labelloc": "t", "lheight": "0.23", - "lp": "242.18,77.794", + "lp": "291.13,416.4", "lwidth": "1.06", - "pad": "2.0", + "pad": "1.0,0.5", "rankdir": "LR", "splines": "spline", "xdotversion": "1.7", - "_subgraph_cnt": 0, + "_subgraph_cnt": 3, "objects": [ { + "name": "cluster_legend", + "_draw_": + [ + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "p", + "points": [[26.000,8.000],[26.000,193.000],[544.860,193.000],[544.860,8.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [264.440,177.400], + "align": "l", + "width": 41.980, + "text": "Legend" + } + ], + "bb": "26,8,544.86,193", + "dpi": "150", + "label": "Legend<\/b>", + "labelloc": "t", + "lheight": "0.23", + "lp": "285.43,180.6", + "lwidth": "0.58", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "dashed", "_gvid": 0, + "nodes": [ + 3,4,5,6,7,8,9,10,11,12 + ], + "edges": [ + 0,1,2,3,4,5,6,7 + ] + }, + { + "name": "cluster_legend-space", + "bb": "8,201,168,289", + "dpi": "150", + "label": "", + "labelloc": "t", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 1, + "nodes": [ + 13 + ] + }, + { + "name": "cluster_mule", + "bb": "33.291,297,574.27,396", + "dpi": "150", + "label": "Application graph", + "labelloc": "t", + "lheight": "0.23", + "lp": "303.78,383.6", + "lwidth": "1.41", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 2, + "nodes": [ + 14,15,16 + ], + "edges": [ + 8,9,10 + ] + }, + { + "_gvid": 3, + "name": "flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[124.000,160.000],[52.000,160.000],[52.000,142.000],[124.000,142.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,146.800], + "align": "c", + "width": 25.660, + "text": "flow" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,151", + "shape": "rectangle", + "width": "1" + }, + { + "_gvid": 4, + "name": "sub-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [261.720,151.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [261.720,146.800], + "align": "c", + "width": 49.760, + "text": "sub-flow" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "261.72,151", + "shape": "ellipse", + "width": "1" + }, + { + "_gvid": 5, + "name": "Unused sub\/-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "C", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "E", + "rect": [464.860,151.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [464.860,146.800], + "align": "c", + "width": 99.920, + "text": "Unused sub\/-flow" + } + ], + "color": "gray", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "464.86,151", + "style": "filled", + "width": "2" + }, + { + "_gvid": 6, + "name": "Flow A", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [88.000,115.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,110.800], + "align": "c", + "width": 42.390, + "text": "Flow A" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,115", + "width": "1" + }, + { + "_gvid": 7, + "name": "sub-flow-1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [261.720,115.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [261.720,110.800], + "align": "c", + "width": 61.420, + "text": "sub-flow-1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "261.72,115", + "width": "1.25" + }, + { + "_gvid": 8, + "name": "Flow C", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [88.000,79.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,74.800], + "align": "c", + "width": 41.620, + "text": "Flow C" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,79", + "width": "1" + }, + { + "_gvid": 9, + "name": "sub-flow-C1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [261.720,79.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [261.720,74.800], + "align": "c", + "width": 70.760, + "text": "sub-flow-C1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "261.72,79", + "width": "1.25" + }, + { + "_gvid": 10, + "name": "flow source", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "P", + "points": [[142.000,25.000],[115.000,34.000],[61.000,34.000],[34.000,25.000],[61.000,16.000],[115.000,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [88.000,20.800], + "align": "c", + "width": 65.690, + "text": "flow source" + } + ], + "color": "cyan", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "88,25", + "shape": "hexagon", + "sourceNode": "true", + "style": "filled", + "width": "1.5" + }, + { + "_gvid": 11, + "name": "flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[306.720,34.000],[216.720,34.000],[216.720,16.000],[306.720,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [261.720,20.800], + "align": "c", + "width": 74.240, + "text": "flow self-call" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "261.72,25", + "shape": "rectangle", + "width": "1.25" + }, + { + "_gvid": 12, + "name": "sub-flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [464.860,25.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [464.860,20.800], + "align": "c", + "width": 98.340, + "text": "sub-flow self-call" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "464.86,25", + "shape": "ellipse", + "width": "2" + }, + { + "_gvid": 13, + "name": "", + "height": "1", + "label": "\\N", + "pos": "88,245", + "shape": "none", + "width": "2" + }, + { + "_gvid": 14, "name": "vm:listener", "_draw_": [ @@ -69,7 +609,7 @@ }, { "op": "P", - "points": [[93.630,29.390],[70.170,58.680],[23.250,58.680],[-0.210,29.390],[23.250,0.110],[70.170,0.110]] + "points": [[134.920,334.000],[111.460,363.290],[64.540,363.290],[41.080,334.000],[64.540,304.710],[111.460,304.710]] } ], "_ldraw_": @@ -90,7 +630,7 @@ }, { "op": "T", - "pt": [37.760,31.790], + "pt": [79.050,336.400], "align": "l", "width": 17.890, "text": "vm" @@ -111,7 +651,7 @@ }, { "op": "T", - "pt": [26.110,17.790], + "pt": [67.400,322.400], "align": "l", "width": 41.210, "text": "listener" @@ -120,14 +660,14 @@ "color": "cyan", "height": "0.8165", "label": "vm<\/b>listener", - "pos": "46.709,29.394", + "pos": "88,334", "shape": "hexagon", "sourceNode": "true", "style": "filled", "width": "1.2975" }, { - "_gvid": 1, + "_gvid": 15, "name": "flow:test-flow", "_draw_": [ @@ -138,7 +678,7 @@ }, { "op": "p", - "points": [[229.130,47.390],[130.510,47.390],[130.510,11.390],[229.130,11.390]] + "points": [[311.030,350.000],[212.420,350.000],[212.420,314.000],[311.030,314.000]] } ], "_ldraw_": @@ -159,7 +699,7 @@ }, { "op": "T", - "pt": [138.420,26.190], + "pt": [220.320,328.800], "align": "l", "width": 25.660, "text": "flow" @@ -180,7 +720,7 @@ }, { "op": "T", - "pt": [164.080,26.190], + "pt": [245.980,328.800], "align": "l", "width": 57.150, "text": ": test-flow" @@ -189,12 +729,12 @@ "color": "blue", "height": "0.5", "label": "flow<\/b>: test-flow", - "pos": "179.82,29.394", + "pos": "261.72,332", "shape": "rectangle", "width": "1.3723" }, { - "_gvid": 2, + "_gvid": 16, "name": "sub-flow:test-sub-flow", "_draw_": [ @@ -205,7 +745,7 @@ }, { "op": "e", - "rect": [382.960,29.390,101.320,18.000] + "rect": [464.860,327.000,101.320,18.000] } ], "_ldraw_": @@ -226,7 +766,7 @@ }, { "op": "T", - "pt": [317.450,26.190], + "pt": [399.350,323.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -247,7 +787,7 @@ }, { "op": "T", - "pt": [367.210,26.190], + "pt": [449.110,323.800], "align": "l", "width": 81.250, "text": ": test-sub-flow" @@ -256,7 +796,7 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: test-sub-flow", - "pos": "382.96,29.394", + "pos": "464.86,327", "shape": "ellipse", "width": "2.8169" } @@ -264,8 +804,326 @@ "edges": [ { "_gvid": 0, - "tail": 0, - "head": 1, + "tail": 3, + "head": 4, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,225.61,151 124.17,151 150.56,151 186.91,151 215.47,151", + "style": "invis" + }, + { + "_gvid": 1, + "tail": 4, + "head": 5, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,392.59,151 297.76,151 321.12,151 352.83,151 382.29,151", + "style": "invis" + }, + { + "_gvid": 2, + "tail": 6, + "head": 7, + "_draw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[124.170,115.000],[147.830,115.000],[179.500,115.000],[206.390,115.000]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[216.430,115.000],[206.430,119.500],[211.430,115.000],[206.430,115.000],[206.430,115.000],[206.430,115.000],[211.430,115.000],[206.430,110.500],[216.430,115.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [186.160,119.200], + "align": "c", + "width": 16.320, + "text": "(1)" + } + ], + "_tldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [203.860,103.830], + "align": "c", + "width": 80.470, + "text": "Call Sequence" + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "(1)", + "labelangle": "-5.0", + "labeldistance": "8.0", + "lp": "186.16,123.4", + "pos": "e,216.43,115 124.17,115 147.83,115 179.5,115 206.39,115", + "style": "solid", + "tail_lp": "203.86,108.03", + "taillabel": "Call Sequence\\n" + }, + { + "_gvid": 3, + "tail": 8, + "head": 9, + "_draw_": + [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "b", + "points": [[124.170,79.000],[147.830,79.000],[179.500,79.000],[206.390,79.000]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "C", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "P", + "points": [[216.430,79.000],[206.430,83.500],[211.430,79.500],[206.430,79.500],[206.430,79.000],[206.430,78.500],[211.430,78.500],[206.430,74.500],[216.430,79.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [197.890,83.200], + "align": "c", + "width": 55.590, + "text": "(1) Async" + } + ], + "_tldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [203.860,67.830], + "align": "c", + "width": 104.580, + "text": "Asynchronous call" + } + ], + "arrowhead": "vee", + "color": "lightblue3", + "dir": "forward", + "label": "", + "labelangle": "-5.0", + "labeldistance": "8.0", + "pos": "e,216.43,79 124.17,79 147.83,79 179.5,79 206.39,79", + "style": "dashed,bold", + "tail_lp": "203.86,72.028", + "taillabel": "Asynchronous call\\n", + "xlabel": "(1) Async", + "xlp": "197.89,87.4" + }, + { + "_gvid": 4, + "tail": 10, + "head": 11, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,216.59,25 142.39,25 162.78,25 186.02,25 206.48,25", + "style": "invis" + }, + { + "_gvid": 5, + "tail": 11, + "head": 11, + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[250.510,34.130],[244.690,42.700],[248.430,52.000],[261.720,52.000],[269.830,52.000],[274.380,48.550],[275.390,43.910]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[272.940,34.130],[279.730,42.740],[274.160,38.980],[275.370,43.830],[275.370,43.830],[275.370,43.830],[274.160,38.980],[271.000,44.920],[272.940,34.130]] + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,272.94,34.129 250.51,34.129 244.69,42.701 248.43,52 261.72,52 269.83,52 274.38,48.547 275.39,43.91" + }, + { + "_gvid": 6, + "tail": 11, + "head": 12, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,392.55,25 306.86,25 329.02,25 356.57,25 382.38,25", + "style": "invis" + }, + { + "_gvid": 7, + "tail": 12, + "head": 12, + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[446.090,33.850],[435.710,42.500],[441.970,52.000],[464.860,52.000],[479.880,52.000],[487.740,47.910],[488.430,42.650]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[483.630,33.850],[492.370,40.470],[486.030,38.240],[488.420,42.630],[488.420,42.630],[488.420,42.630],[486.030,38.240],[484.470,44.780],[483.630,33.850]] + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,483.63,33.85 446.09,33.85 435.71,42.498 441.97,52 464.86,52 479.88,52 487.74,47.908 488.43,42.65" + }, + { + "_gvid": 8, + "tail": 14, + "head": 15, "_draw_": [ { @@ -279,7 +1137,7 @@ }, { "op": "b", - "points": [[93.570,29.390],[102.060,29.390],[111.040,29.390],[119.850,29.390]] + "points": [[134.570,333.470],[155.240,333.230],[179.940,332.940],[201.990,332.680]] } ], "_hdraw_": @@ -304,19 +1162,19 @@ }, { "op": "P", - "points": [[130.090,29.390],[120.090,33.890],[125.090,29.890],[120.090,29.890],[120.090,29.390],[120.090,28.890],[125.090,28.890],[120.090,24.890],[130.090,29.390]] + "points": [[212.240,332.560],[202.290,337.180],[207.240,333.120],[202.240,333.180],[202.240,332.680],[202.230,332.180],[207.230,332.120],[202.180,328.180],[212.240,332.560]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,130.09,29.394 93.565,29.394 102.06,29.394 111.04,29.394 119.85,29.394", + "pos": "e,212.24,332.56 134.57,333.47 155.24,333.23 179.94,332.94 201.99,332.68", "style": "bold" }, { - "_gvid": 1, - "tail": 1, - "head": 2, + "_gvid": 9, + "tail": 15, + "head": 16, "_draw_": [ { @@ -330,7 +1188,7 @@ }, { "op": "b", - "points": [[229.250,29.390],[242.100,29.390],[256.510,29.390],[271.220,29.390]] + "points": [[311.160,330.800],[324.190,330.470],[338.840,330.110],[353.770,329.740]] } ], "_hdraw_": @@ -351,7 +1209,7 @@ }, { "op": "P", - "points": [[281.430,29.390],[271.430,33.890],[276.430,29.390],[271.430,29.390],[271.430,29.390],[271.430,29.390],[276.430,29.390],[271.430,24.890],[281.430,29.390]] + "points": [[364.140,329.480],[354.250,334.230],[359.140,329.600],[354.140,329.730],[354.140,329.730],[354.140,329.730],[359.140,329.600],[354.030,325.230],[364.140,329.480]] } ], "_ldraw_": @@ -368,7 +1226,7 @@ }, { "op": "T", - "pt": [255.390,33.590], + "pt": [337.290,334.200], "align": "c", "width": 16.320, "text": "(1)" @@ -377,14 +1235,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "255.39,37.794", - "pos": "e,281.43,29.394 229.25,29.394 242.1,29.394 256.51,29.394 271.22,29.394", + "lp": "337.29,338.4", + "pos": "e,364.14,329.48 311.16,330.8 324.19,330.47 338.84,330.11 353.77,329.74", "style": "solid" }, { - "_gvid": 2, - "tail": 2, - "head": 2, + "_gvid": 10, + "tail": 16, + "head": 16, "_draw_": [ { @@ -394,7 +1252,7 @@ }, { "op": "b", - "points": [[360.310,47.180],[356.460,56.710],[364.010,65.390],[382.960,65.390],[394.500,65.390],[401.820,62.170],[404.900,57.490]] + "points": [[442.210,344.780],[438.360,354.310],[445.910,363.000],[464.860,363.000],[476.410,363.000],[483.720,359.770],[486.800,355.100]] } ], "_hdraw_": @@ -415,13 +1273,13 @@ }, { "op": "P", - "points": [[405.610,47.180],[409.410,57.460],[405.260,52.160],[404.920,57.150],[404.920,57.150],[404.920,57.150],[405.260,52.160],[400.430,56.840],[405.610,47.180]] + "points": [[487.510,344.780],[491.320,355.070],[487.170,349.770],[486.830,354.760],[486.830,354.760],[486.830,354.760],[487.170,349.770],[482.340,354.450],[487.510,344.780]] } ], "arrowhead": "vee", "dir": "forward", "label": "", - "pos": "e,405.61,47.176 360.31,47.176 356.46,56.709 364.01,65.394 382.96,65.394 394.5,65.394 401.82,62.169 404.9,57.492" + "pos": "e,487.51,344.78 442.21,344.78 438.36,354.31 445.91,363 464.86,363 476.41,363 483.72,359.77 486.8,355.1" } ] } diff --git a/src/test/resources/single-flow-generation-example.json b/src/test/resources/single-flow-generation-example.json index 4f1537e..265e05a 100644 --- a/src/test/resources/single-flow-generation-example.json +++ b/src/test/resources/single-flow-generation-example.json @@ -16,7 +16,7 @@ }, { "op": "P", - "points": [[-144.000,-144.000],[-144.000,312.800],[1057.220,312.800],[1057.220,-144.000]] + "points": [[-72.000,-36.000],[-72.000,550.800],[977.950,550.800],[977.950,-36.000]] } ], "_ldraw_": @@ -33,27 +33,567 @@ }, { "op": "T", - "pt": [418.320,152.200], + "pt": [414.690,498.200], "align": "l", "width": 76.580, "text": "Test Diagram" } ], - "bb": "0,0,913.22,168.8", + "bb": "0,0,905.95,514.8", "dpi": "150", "label": "Test Diagram", "labelloc": "t", "lheight": "0.23", - "lp": "456.61,156.4", + "lp": "452.98,502.4", "lwidth": "1.06", - "pad": "2.0", + "pad": "1.0,0.5", "rankdir": "LR", "splines": "spline", "xdotversion": "1.7", - "_subgraph_cnt": 0, + "_subgraph_cnt": 3, "objects": [ { + "name": "cluster_legend", + "_draw_": + [ + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "p", + "points": [[76.860,8.000],[76.860,193.000],[839.050,193.000],[839.050,8.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "t", + "fontchar": 1 + }, + { + "op": "T", + "pt": [436.960,177.400], + "align": "l", + "width": 41.980, + "text": "Legend" + } + ], + "bb": "76.856,8,839.05,193", + "dpi": "150", + "label": "Legend<\/b>", + "labelloc": "t", + "lheight": "0.23", + "lp": "457.95,180.6", + "lwidth": "0.58", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "dashed", "_gvid": 0, + "nodes": [ + 3,4,5,6,7,8,9,10,11,12 + ], + "edges": [ + 0,1,2,3,4,5,6,7 + ] + }, + { + "name": "cluster_legend-space", + "bb": "58.856,201,218.86,289", + "dpi": "150", + "label": "", + "labelloc": "t", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 1, + "nodes": [ + 13 + ] + }, + { + "name": "cluster_mule", + "bb": "8,297,897.95,482", + "dpi": "150", + "label": "Application graph", + "labelloc": "t", + "lheight": "0.23", + "lp": "452.98,469.6", + "lwidth": "1.41", + "pad": "1.0,0.5", + "rankdir": "LR", + "splines": "spline", + "style": "invis", + "_gvid": 2, + "nodes": [ + 14,15,16,17,18 + ], + "edges": [ + 8,9,10,11 + ] + }, + { + "_gvid": 3, + "name": "flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[174.860,160.000],[102.860,160.000],[102.860,142.000],[174.860,142.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [138.860,146.800], + "align": "c", + "width": 25.660, + "text": "flow" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "138.86,151", + "shape": "rectangle", + "width": "1" + }, + { + "_gvid": 4, + "name": "sub-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [444.930,151.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [444.930,146.800], + "align": "c", + "width": 49.760, + "text": "sub-flow" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "444.93,151", + "shape": "ellipse", + "width": "1" + }, + { + "_gvid": 5, + "name": "Unused sub\/-flow", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "C", + "grad": "none", + "color": "#c0c0c0" + }, + { + "op": "E", + "rect": [759.050,151.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [759.050,146.800], + "align": "c", + "width": 99.920, + "text": "Unused sub\/-flow" + } + ], + "color": "gray", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "759.05,151", + "style": "filled", + "width": "2" + }, + { + "_gvid": 6, + "name": "Flow A", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [138.860,115.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [138.860,110.800], + "align": "c", + "width": 42.390, + "text": "Flow A" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "138.86,115", + "width": "1" + }, + { + "_gvid": 7, + "name": "sub-flow-1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [444.930,115.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [444.930,110.800], + "align": "c", + "width": 61.420, + "text": "sub-flow-1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "444.93,115", + "width": "1.25" + }, + { + "_gvid": 8, + "name": "Flow C", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [138.860,79.000,36.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [138.860,74.800], + "align": "c", + "width": 41.620, + "text": "Flow C" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "138.86,79", + "width": "1" + }, + { + "_gvid": 9, + "name": "sub-flow-C1", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [444.930,79.000,45.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [444.930,74.800], + "align": "c", + "width": 70.760, + "text": "sub-flow-C1" + } + ], + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "444.93,79", + "width": "1.25" + }, + { + "_gvid": 10, + "name": "flow source", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "C", + "grad": "none", + "color": "#00ffff" + }, + { + "op": "P", + "points": [[192.860,25.000],[165.860,34.000],[111.860,34.000],[84.860,25.000],[111.860,16.000],[165.860,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [138.860,20.800], + "align": "c", + "width": 65.690, + "text": "flow source" + } + ], + "color": "cyan", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "138.86,25", + "shape": "hexagon", + "sourceNode": "true", + "style": "filled", + "width": "1.5" + }, + { + "_gvid": 11, + "name": "flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#0000ff" + }, + { + "op": "p", + "points": [[489.930,34.000],[399.930,34.000],[399.930,16.000],[489.930,16.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [444.930,20.800], + "align": "c", + "width": 74.240, + "text": "flow self-call" + } + ], + "color": "blue", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "444.93,25", + "shape": "rectangle", + "width": "1.25" + }, + { + "_gvid": 12, + "name": "sub-flow self-call", + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "e", + "rect": [759.050,25.000,72.000,9.000] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [759.050,20.800], + "align": "c", + "width": 98.340, + "text": "sub-flow self-call" + } + ], + "color": "black", + "fixedsize": "true", + "height": "0.25", + "label": "\\N", + "pos": "759.05,25", + "shape": "ellipse", + "width": "2" + }, + { + "_gvid": 13, + "name": "", + "height": "1", + "label": "\\N", + "pos": "138.86,245", + "shape": "none", + "width": "2" + }, + { + "_gvid": 14, "name": "sub-flow:sub-flow-level-1-2", "_draw_": [ @@ -64,7 +604,7 @@ }, { "op": "e", - "rect": [122.860,72.000,122.710,18.000] + "rect": [138.860,377.000,122.710,18.000] } ], "_ldraw_": @@ -85,7 +625,7 @@ }, { "op": "T", - "pt": [41.800,68.800], + "pt": [57.800,373.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -106,7 +646,7 @@ }, { "op": "T", - "pt": [91.560,68.800], + "pt": [107.560,373.800], "align": "l", "width": 112.350, "text": ": sub-flow-level-1-2" @@ -115,12 +655,12 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: sub-flow-level-1-2", - "pos": "122.86,72", + "pos": "138.86,377", "shape": "ellipse", "width": "3.4127" }, { - "_gvid": 1, + "_gvid": 15, "name": "sub-flow:sub-flow-level-2-2-0", "_draw_": [ @@ -131,7 +671,7 @@ }, { "op": "e", - "rect": [468.200,126.000,130.800,18.000] + "rect": [444.930,323.000,130.800,18.000] } ], "_ldraw_": @@ -152,7 +692,7 @@ }, { "op": "T", - "pt": [381.310,122.800], + "pt": [358.050,319.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -173,7 +713,7 @@ }, { "op": "T", - "pt": [431.080,122.800], + "pt": [407.810,319.800], "align": "l", "width": 124.010, "text": ": sub-flow-level-2-2-0" @@ -182,12 +722,12 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: sub-flow-level-2-2-0", - "pos": "468.2,126", + "pos": "444.93,323", "shape": "ellipse", "width": "3.6361" }, { - "_gvid": 2, + "_gvid": 16, "name": "sub-flow:sub-flow-level-2-1-1", "_draw_": [ @@ -198,7 +738,7 @@ }, { "op": "e", - "rect": [468.200,72.000,130.800,18.000] + "rect": [444.930,377.000,130.800,18.000] } ], "_ldraw_": @@ -219,7 +759,7 @@ }, { "op": "T", - "pt": [381.310,68.800], + "pt": [358.050,373.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -240,7 +780,7 @@ }, { "op": "T", - "pt": [431.080,68.800], + "pt": [407.810,373.800], "align": "l", "width": 124.010, "text": ": sub-flow-level-2-1-1" @@ -249,12 +789,12 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: sub-flow-level-2-1-1", - "pos": "468.2,72", + "pos": "444.93,377", "shape": "ellipse", "width": "3.6361" }, { - "_gvid": 3, + "_gvid": 17, "name": "sub-flow:sub-flow-level-2-2-1", "_draw_": [ @@ -265,7 +805,7 @@ }, { "op": "e", - "rect": [468.200,18.000,130.800,18.000] + "rect": [444.930,431.000,130.800,18.000] } ], "_ldraw_": @@ -286,7 +826,7 @@ }, { "op": "T", - "pt": [381.310,14.800], + "pt": [358.050,427.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -307,7 +847,7 @@ }, { "op": "T", - "pt": [431.080,14.800], + "pt": [407.810,427.800], "align": "l", "width": 124.010, "text": ": sub-flow-level-2-2-1" @@ -316,12 +856,12 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: sub-flow-level-2-2-1", - "pos": "468.2,18", + "pos": "444.93,431", "shape": "ellipse", "width": "3.6361" }, { - "_gvid": 4, + "_gvid": 18, "name": "sub-flow:sub-flow-level-2-2-2", "_draw_": [ @@ -332,7 +872,7 @@ }, { "op": "e", - "rect": [782.320,18.000,130.800,18.000] + "rect": [759.050,431.000,130.800,18.000] } ], "_ldraw_": @@ -353,7 +893,7 @@ }, { "op": "T", - "pt": [695.430,14.800], + "pt": [672.170,427.800], "align": "l", "width": 49.760, "text": "sub-flow" @@ -374,7 +914,7 @@ }, { "op": "T", - "pt": [745.200,14.800], + "pt": [721.930,427.800], "align": "l", "width": 124.010, "text": ": sub-flow-level-2-2-2" @@ -383,7 +923,7 @@ "color": "black", "height": "0.5", "label": "sub-flow<\/b>: sub-flow-level-2-2-2", - "pos": "782.32,18", + "pos": "759.05,431", "shape": "ellipse", "width": "3.6361" } @@ -391,8 +931,326 @@ "edges": [ { "_gvid": 0, - "tail": 0, - "head": 1, + "tail": 3, + "head": 4, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,408.6,151 175.03,151 230.31,151 337.46,151 398.49,151", + "style": "invis" + }, + { + "_gvid": 1, + "tail": 4, + "head": 5, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,686.76,151 481.13,151 528.17,151 612.97,151 676.38,151", + "style": "invis" + }, + { + "_gvid": 2, + "tail": 6, + "head": 7, + "_draw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[175.030,115.000],[227.750,115.000],[327.680,115.000],[389.750,115.000]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[399.760,115.000],[389.760,119.500],[394.760,115.000],[389.760,115.000],[389.760,115.000],[389.760,115.000],[394.760,115.000],[389.760,110.500],[399.760,115.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [287.870,119.200], + "align": "c", + "width": 16.320, + "text": "(1)" + } + ], + "_tldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [254.730,103.830], + "align": "c", + "width": 80.470, + "text": "Call Sequence" + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "(1)", + "labelangle": "-5.0", + "labeldistance": "8.0", + "lp": "287.87,123.4", + "pos": "e,399.76,115 175.03,115 227.75,115 327.68,115 389.75,115", + "style": "solid", + "tail_lp": "254.73,108.03", + "taillabel": "Call Sequence\\n" + }, + { + "_gvid": 3, + "tail": 8, + "head": 9, + "_draw_": + [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "dashed" + }, + { + "op": "c", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "b", + "points": [[175.030,79.000],[227.750,79.000],[327.680,79.000],[389.750,79.000]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "setlinewidth(2)" + }, + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "C", + "grad": "none", + "color": "#9ac0cd" + }, + { + "op": "P", + "points": [[399.760,79.000],[389.760,83.500],[394.760,79.500],[389.760,79.500],[389.760,79.000],[389.760,78.500],[394.760,78.500],[389.760,74.500],[399.760,79.000]] + } + ], + "_ldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [314.990,83.200], + "align": "c", + "width": 55.590, + "text": "(1) Async" + } + ], + "_tldraw_": + [ + { + "op": "F", + "size": 14.000, + "face": "Times-Roman" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "T", + "pt": [254.730,67.830], + "align": "c", + "width": 104.580, + "text": "Asynchronous call" + } + ], + "arrowhead": "vee", + "color": "lightblue3", + "dir": "forward", + "label": "", + "labelangle": "-5.0", + "labeldistance": "8.0", + "pos": "e,399.76,79 175.03,79 227.75,79 327.68,79 389.75,79", + "style": "dashed,bold", + "tail_lp": "254.73,72.028", + "taillabel": "Asynchronous call\\n", + "xlabel": "(1) Async", + "xlp": "314.99,87.4" + }, + { + "_gvid": 4, + "tail": 10, + "head": 11, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,399.58,25 193.17,25 248.33,25 334.03,25 389.57,25", + "style": "invis" + }, + { + "_gvid": 5, + "tail": 11, + "head": 11, + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[421.280,34.130],[409.020,42.700],[416.900,52.000],[444.930,52.000],[463.770,52.000],[473.510,47.800],[474.150,42.450]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[468.580,34.130],[477.880,39.940],[471.360,38.280],[474.140,42.440],[474.140,42.440],[474.140,42.440],[471.360,38.280],[470.400,44.940],[468.580,34.130]] + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,468.58,34.129 421.28,34.129 409.02,42.701 416.9,52 444.93,52 463.77,52 473.51,47.802 474.15,42.448" + }, + { + "_gvid": 6, + "tail": 11, + "head": 12, + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,686.87,25 489.99,25 538.36,25 617.07,25 676.72,25", + "style": "invis" + }, + { + "_gvid": 7, + "tail": 12, + "head": 12, + "_draw_": + [ + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "b", + "points": [[736.230,33.570],[722.800,42.290],[730.410,52.000],[759.050,52.000],[779.190,52.000],[788.930,47.200],[788.270,41.320]] + } + ], + "_hdraw_": + [ + { + "op": "S", + "style": "solid" + }, + { + "op": "c", + "grad": "none", + "color": "#000000" + }, + { + "op": "C", + "grad": "none", + "color": "#000000" + }, + { + "op": "P", + "points": [[781.880,33.570],[791.710,38.420],[785.060,37.430],[788.240,41.280],[788.240,41.280],[788.240,41.280],[785.060,37.430],[784.770,44.150],[781.880,33.570]] + } + ], + "arrowhead": "vee", + "dir": "forward", + "label": "", + "pos": "e,781.88,33.571 736.23,33.571 722.8,42.292 730.41,52 759.05,52 779.19,52 788.93,47.201 788.27,41.319" + }, + { + "_gvid": 8, + "tail": 14, + "head": 15, "_draw_": [ { @@ -406,7 +1264,7 @@ }, { "op": "b", - "points": [[207.410,85.140],[256.820,92.910],[319.580,102.780],[371.040,110.880]] + "points": [[217.770,363.160],[259.400,355.770],[310.840,346.640],[354.140,338.950]] } ], "_hdraw_": @@ -427,7 +1285,7 @@ }, { "op": "P", - "points": [[381.180,112.470],[370.600,115.360],[376.240,111.690],[371.300,110.920],[371.300,110.920],[371.300,110.920],[376.240,111.690],[372.000,106.470],[381.180,112.470]] + "points": [[364.100,337.180],[355.050,343.360],[359.180,338.050],[354.260,338.930],[354.260,338.930],[354.260,338.930],[359.180,338.050],[353.470,334.490],[364.100,337.180]] } ], "_ldraw_": @@ -444,7 +1302,7 @@ }, { "op": "T", - "pt": [291.510,106.200], + "pt": [287.870,355.200], "align": "c", "width": 16.320, "text": "(1)" @@ -453,14 +1311,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "291.51,110.4", - "pos": "e,381.18,112.47 207.41,85.141 256.82,92.911 319.58,102.78 371.04,110.88", + "lp": "287.87,359.4", + "pos": "e,364.1,337.18 217.77,363.16 259.4,355.77 310.84,346.64 354.14,338.95", "style": "solid" }, { - "_gvid": 1, - "tail": 0, - "head": 2, + "_gvid": 9, + "tail": 14, + "head": 16, "_draw_": [ { @@ -474,11 +1332,11 @@ { "op": "c", "grad": "none", - "color": "#a52a2a" + "color": "#9ac0cd" }, { "op": "b", - "points": [[245.870,72.000],[272.110,72.000],[300.040,72.000],[326.900,72.000]] + "points": [[261.780,377.000],[275.610,377.000],[289.780,377.000],[303.820,377.000]] } ], "_hdraw_": @@ -494,16 +1352,16 @@ { "op": "c", "grad": "none", - "color": "#a52a2a" + "color": "#9ac0cd" }, { "op": "C", "grad": "none", - "color": "#a52a2a" + "color": "#9ac0cd" }, { "op": "P", - "points": [[337.140,72.000],[327.140,76.500],[332.140,72.500],[327.140,72.500],[327.140,72.000],[327.140,71.500],[332.140,71.500],[327.140,67.500],[337.140,72.000]] + "points": [[314.010,377.000],[304.010,381.500],[309.010,377.500],[304.010,377.500],[304.010,377.000],[304.010,376.500],[309.010,376.500],[304.010,372.500],[314.010,377.000]] } ], "_ldraw_": @@ -520,24 +1378,25 @@ }, { "op": "T", - "pt": [291.510,76.200], + "pt": [259.870,381.200], "align": "c", "width": 55.590, "text": "(2) Async" } ], "arrowhead": "vee", - "color": "brown", + "color": "lightblue3", "dir": "forward", - "label": "(2) Async", - "lp": "291.51,80.4", - "pos": "e,337.14,72 245.87,72 272.11,72 300.04,72 326.9,72", - "style": "dashed,bold" + "label": "", + "pos": "e,314.01,377 261.78,377 275.61,377 289.78,377 303.82,377", + "style": "dashed,bold", + "xlabel": "(2) Async", + "xlp": "259.87,385.4" }, { - "_gvid": 2, - "tail": 0, - "head": 3, + "_gvid": 10, + "tail": 14, + "head": 17, "_draw_": [ { @@ -551,7 +1410,7 @@ }, { "op": "b", - "points": [[207.410,58.860],[256.820,51.090],[319.580,41.220],[371.040,33.120]] + "points": [[217.770,390.840],[259.400,398.230],[310.840,407.360],[354.140,415.050]] } ], "_hdraw_": @@ -572,7 +1431,7 @@ }, { "op": "P", - "points": [[381.180,31.530],[372.000,37.530],[376.240,32.310],[371.300,33.080],[371.300,33.080],[371.300,33.080],[376.240,32.310],[370.600,28.640],[381.180,31.530]] + "points": [[364.100,416.820],[353.470,419.510],[359.180,415.950],[354.260,415.070],[354.260,415.070],[354.260,415.070],[359.180,415.950],[355.050,410.640],[364.100,416.820]] } ], "_ldraw_": @@ -589,7 +1448,7 @@ }, { "op": "T", - "pt": [291.510,54.200], + "pt": [287.870,408.200], "align": "c", "width": 16.320, "text": "(3)" @@ -598,14 +1457,14 @@ "arrowhead": "vee", "dir": "forward", "label": "(3)", - "lp": "291.51,58.4", - "pos": "e,381.18,31.529 207.41,58.859 256.82,51.089 319.58,41.217 371.04,33.123", + "lp": "287.87,412.4", + "pos": "e,364.1,416.82 217.77,390.84 259.4,398.23 310.84,407.36 354.14,415.05", "style": "solid" }, { - "_gvid": 3, - "tail": 3, - "head": 4, + "_gvid": 11, + "tail": 17, + "head": 18, "_draw_": [ { @@ -619,7 +1478,7 @@ }, { "op": "b", - "points": [[599.310,18.000],[613.100,18.000],[627.180,18.000],[641.080,18.000]] + "points": [[576.040,431.000],[589.840,431.000],[603.910,431.000],[617.820,431.000]] } ], "_hdraw_": @@ -640,7 +1499,7 @@ }, { "op": "P", - "points": [[651.170,18.000],[641.170,22.500],[646.170,18.000],[641.170,18.000],[641.170,18.000],[641.170,18.000],[646.170,18.000],[641.170,13.500],[651.170,18.000]] + "points": [[627.910,431.000],[617.910,435.500],[622.910,431.000],[617.910,431.000],[617.910,431.000],[617.910,431.000],[622.910,431.000],[617.910,426.500],[627.910,431.000]] } ], "_ldraw_": @@ -657,7 +1516,7 @@ }, { "op": "T", - "pt": [625.260,22.200], + "pt": [601.990,435.200], "align": "c", "width": 16.320, "text": "(1)" @@ -666,9 +1525,9 @@ "arrowhead": "vee", "dir": "forward", "label": "(1)", - "lp": "625.26,26.4", - "pos": "e,651.17,18 599.31,18 613.1,18 627.18,18 641.08,18", + "lp": "601.99,439.4", + "pos": "e,627.91,431 576.04,431 589.84,431 603.91,431 617.82,431", "style": "solid" } ] -} \ No newline at end of file +}