文档更新

This commit is contained in:
jinchao 2025-07-25 13:42:20 +08:00
parent 41cbb5743b
commit 2c394d7ab8
5 changed files with 2013 additions and 0 deletions

View File

@ -0,0 +1,758 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="680" dy="388" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="YtNTQt618ny-sFmqOg6v-84" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="920" width="280" height="460" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-25" value="删除模型版本流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry width="280" height="460" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-26" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry y="20" width="140" height="440" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-27" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-28" value="用户点击删除模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-31" target="YtNTQt618ny-sFmqOg6v-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-31" value="用户选择ATA章节及模型" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-35" value="前端表单验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-37" value="验证通过?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-35" target="YtNTQt618ny-sFmqOg6v-37" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-39" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="330" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-37" target="YtNTQt618ny-sFmqOg6v-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-41" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-40" vertex="1" connectable="0">
<mxGeometry x="-0.1357" relative="1" as="geometry">
<mxPoint x="-10" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-42" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-28" target="YtNTQt618ny-sFmqOg6v-35" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="60" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-27" target="YtNTQt618ny-sFmqOg6v-31" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-44" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry x="140" y="20" width="140" height="440" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-62" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-70" target="YtNTQt618ny-sFmqOg6v-75" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-83" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-69" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-47" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-70" value="写入成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-71" value="写入数据库" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-71" target="YtNTQt618ny-sFmqOg6v-70" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-70" target="YtNTQt618ny-sFmqOg6v-62" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-74" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-73" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-75" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-75" target="YtNTQt618ny-sFmqOg6v-42" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-37" target="YtNTQt618ny-sFmqOg6v-71" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="149.99999999999943" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-81" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-80" vertex="1" connectable="0">
<mxGeometry x="-0.1207" y="-1" relative="1" as="geometry">
<mxPoint x="-11" y="40" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-62" target="YtNTQt618ny-sFmqOg6v-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-9" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="20" width="400" height="880" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-155" value="新建/编辑模型版本流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry width="400" height="880" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-156" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry y="20" width="140" height="860" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-1" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-2" value="用户选择ATA章节" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-24" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="JOUyWLhBWD3xtvslN3do-26" target="IF__UzwnMCTeSwNdx4oP-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-26" value="显示ATA章节卡片" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="YtNTQt618ny-sFmqOg6v-1" target="YtNTQt618ny-sFmqOg6v-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-1" value="显示该章节下模型" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-2" value="用户选择模型" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="330" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-3" value="显示该模型&lt;div&gt;所有版本&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="YtNTQt618ny-sFmqOg6v-2" target="IF__UzwnMCTeSwNdx4oP-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1180" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-160" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="IF__UzwnMCTeSwNdx4oP-2" target="YtNTQt618ny-sFmqOg6v-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-60" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-0" target="epkTv9PBIllWztq9xRfP-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-0" value="用户选择新建版本或编辑某个版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="IF__UzwnMCTeSwNdx4oP-156">
<mxGeometry x="9.999999999999545" y="450" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="IF__UzwnMCTeSwNdx4oP-3" target="epkTv9PBIllWztq9xRfP-0" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-1" target="epkTv9PBIllWztq9xRfP-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-1" value="显示模型编辑页面" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="IF__UzwnMCTeSwNdx4oP-156">
<mxGeometry x="9.999999999999545" y="510" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-3" target="epkTv9PBIllWztq9xRfP-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-3" value="用户编辑完成后点击保存" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="IF__UzwnMCTeSwNdx4oP-156">
<mxGeometry x="9.999999999999545" y="570" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-5" value="表单验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="IF__UzwnMCTeSwNdx4oP-156">
<mxGeometry x="9.999999999999545" y="630" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-157" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry x="140" y="20" width="260" height="860" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-16" value="读取数据库中&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ATA章节及模型数据&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-18" target="JOUyWLhBWD3xtvslN3do-20" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-21" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-21" vertex="1" connectable="0">
<mxGeometry x="-0.6571" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-18" target="JOUyWLhBWD3xtvslN3do-22" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-22" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-23" vertex="1" connectable="0">
<mxGeometry x="-0.875" y="1" relative="1" as="geometry">
<mxPoint x="-18" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-18" value="读取成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="129.99999999999955" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-16" target="JOUyWLhBWD3xtvslN3do-18" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-20" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-22" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-13" value="写入数据库" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="630" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-12" value="写入成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="9.999999999999545" y="690" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-13" target="YtNTQt618ny-sFmqOg6v-12" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-165" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="130" y="810" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-12" target="IF__UzwnMCTeSwNdx4oP-165" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-8" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="YtNTQt618ny-sFmqOg6v-20">
<mxGeometry x="-0.7412" y="1" relative="1" as="geometry">
<mxPoint x="-22" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-36" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="750" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-12" target="IF__UzwnMCTeSwNdx4oP-36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="560" y="570" as="sourcePoint" />
<mxPoint x="560" y="590" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-19" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-18" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="6" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="IF__UzwnMCTeSwNdx4oP-1" target="JOUyWLhBWD3xtvslN3do-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="JOUyWLhBWD3xtvslN3do-20" target="JOUyWLhBWD3xtvslN3do-24" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="JOUyWLhBWD3xtvslN3do-22" target="JOUyWLhBWD3xtvslN3do-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-0" value="验证通过?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry x="9.999999999999545" y="710" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-8" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry x="10" y="770" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="JOUyWLhBWD3xtvslN3do-0" target="JOUyWLhBWD3xtvslN3do-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-11" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-10" vertex="1" connectable="0">
<mxGeometry x="-0.1357" relative="1" as="geometry">
<mxPoint x="-10" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-166" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-9" vertex="1">
<mxGeometry x="10" y="830" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-167" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="IF__UzwnMCTeSwNdx4oP-165" target="IF__UzwnMCTeSwNdx4oP-166" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="JOUyWLhBWD3xtvslN3do-0" target="YtNTQt618ny-sFmqOg6v-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="180" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-6" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-5" vertex="1" connectable="0">
<mxGeometry x="-0.1207" y="-1" relative="1" as="geometry">
<mxPoint x="-21" y="14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-9" source="IF__UzwnMCTeSwNdx4oP-36" target="JOUyWLhBWD3xtvslN3do-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-9" source="epkTv9PBIllWztq9xRfP-5" target="JOUyWLhBWD3xtvslN3do-0">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-49" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="1400" width="380" height="460" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-11" value="上传数据包模型流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-49">
<mxGeometry width="380" height="460" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-12" value="前端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-49">
<mxGeometry y="20" width="140" height="440" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-13" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-14" value="用户上传数据包模型文件夹" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-12" source="epkTv9PBIllWztq9xRfP-16" target="epkTv9PBIllWztq9xRfP-14">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-16" value="用户选择需要编辑的模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-17" value="前端表单验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-18" value="验证通过?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="9.999999999999545" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-12" source="epkTv9PBIllWztq9xRfP-17" target="epkTv9PBIllWztq9xRfP-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-20" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="10" y="330" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-12" source="epkTv9PBIllWztq9xRfP-18" target="epkTv9PBIllWztq9xRfP-20">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-22" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-21">
<mxGeometry x="-0.1357" relative="1" as="geometry">
<mxPoint x="-10" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-23" value="自动填充解析结果" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-12">
<mxGeometry x="10" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-12" source="epkTv9PBIllWztq9xRfP-14" target="epkTv9PBIllWztq9xRfP-17">
<mxGeometry relative="1" as="geometry">
<mxPoint x="60" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-12" source="epkTv9PBIllWztq9xRfP-13" target="epkTv9PBIllWztq9xRfP-16">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-26" value="后端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-49">
<mxGeometry x="140" y="20" width="240" height="440" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-27" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="10" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-30" target="epkTv9PBIllWztq9xRfP-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-29" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-28">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="11" y="-23" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-30" value="解析成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="129.99999999999955" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-31" value="数字签名验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-30" target="epkTv9PBIllWztq9xRfP-27">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-34" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-33">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="13" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-35" value="返回成功响应与解析结果" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="130" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-40" value="数据包模型解析" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="130" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-40" target="epkTv9PBIllWztq9xRfP-30">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-42" value="验证成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-26">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-31" target="epkTv9PBIllWztq9xRfP-42">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-42" target="epkTv9PBIllWztq9xRfP-27">
<mxGeometry relative="1" as="geometry">
<mxPoint x="140" y="240" as="sourcePoint" />
<mxPoint x="70" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-45" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-44">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="-10" y="-12" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-26" source="epkTv9PBIllWztq9xRfP-42" target="epkTv9PBIllWztq9xRfP-40">
<mxGeometry relative="1" as="geometry">
<mxPoint x="240" y="240" as="sourcePoint" />
<mxPoint x="120" y="420" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-48" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-47">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-5" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-49" source="epkTv9PBIllWztq9xRfP-35" target="epkTv9PBIllWztq9xRfP-23">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-49" source="epkTv9PBIllWztq9xRfP-18" target="epkTv9PBIllWztq9xRfP-31">
<mxGeometry relative="1" as="geometry">
<mxPoint x="149.99999999999943" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-38" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-37">
<mxGeometry x="-0.1207" y="-1" relative="1" as="geometry">
<mxPoint x="-11" y="40" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-49" source="epkTv9PBIllWztq9xRfP-27" target="epkTv9PBIllWztq9xRfP-20">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-80" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="1878" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-51" value="模型集成模板代码生成流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-80">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-52" value="前端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-80">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-53" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-52">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-54" value="用户点击模板代码生成" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-52">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-52" source="epkTv9PBIllWztq9xRfP-56" target="epkTv9PBIllWztq9xRfP-54">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-56" value="用户选择需要生成代码的模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-52">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-60" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-52">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-63" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-52">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-52" source="epkTv9PBIllWztq9xRfP-53" target="epkTv9PBIllWztq9xRfP-56">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-66" value="后端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-80">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-67" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-66">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-70" target="epkTv9PBIllWztq9xRfP-75">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-69" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-68">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-70" value="生成成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-66">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-71" value="调用模型集成后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-66">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-71" target="epkTv9PBIllWztq9xRfP-70">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-70" target="epkTv9PBIllWztq9xRfP-67">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-74" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-73">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-75" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-66">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-75" target="epkTv9PBIllWztq9xRfP-63">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-67" target="epkTv9PBIllWztq9xRfP-60">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-54" target="epkTv9PBIllWztq9xRfP-71">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-104" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="2240" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-82" value="模型集成模板代码下载流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-104">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-83" value="前端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-104">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-84" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-83">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-85" value="用户点击模板代码下载" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-83">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-86" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-83" source="epkTv9PBIllWztq9xRfP-87" target="epkTv9PBIllWztq9xRfP-85">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-87" value="用户选择需要下载代码的模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-83">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-88" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-83">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-89" value="执行下载" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-83">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-83" source="epkTv9PBIllWztq9xRfP-84" target="epkTv9PBIllWztq9xRfP-87">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-91" value="后端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-104">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-92" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-91">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-95" target="epkTv9PBIllWztq9xRfP-100">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-94" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-93">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-95" value="压缩成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-91">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-96" value="调用模型集成后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-91">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-97" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-96" target="epkTv9PBIllWztq9xRfP-95">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-98" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-95" target="epkTv9PBIllWztq9xRfP-92">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-99" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-98">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-100" value="返回成功响应及压缩包路径" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-91">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-100" target="epkTv9PBIllWztq9xRfP-89">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-92" target="epkTv9PBIllWztq9xRfP-88">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-103" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-85" target="epkTv9PBIllWztq9xRfP-96">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-105" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="2600" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-106" value="模型集成代码上传流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-105">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-107" value="前端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-105">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-108" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-107">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-109" value="用户点击集成代码上传" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-107">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-107" source="epkTv9PBIllWztq9xRfP-111" target="epkTv9PBIllWztq9xRfP-109">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-111" value="用户选择需要上传代码的模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-107">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-112" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-107">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-113" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-107">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-114" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-107" source="epkTv9PBIllWztq9xRfP-108" target="epkTv9PBIllWztq9xRfP-111">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-115" value="后端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-105">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-116" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-115">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-117" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-119" target="epkTv9PBIllWztq9xRfP-124">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-118" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-117">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-119" value="验证成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-115">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-120" value="调用模型集成后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-115">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-120" target="epkTv9PBIllWztq9xRfP-119">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-119" target="epkTv9PBIllWztq9xRfP-116">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-123" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-122">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-124" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-115">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-125" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-124" target="epkTv9PBIllWztq9xRfP-113">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-126" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-116" target="epkTv9PBIllWztq9xRfP-112">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-127" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-109" target="epkTv9PBIllWztq9xRfP-120">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-128" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="2960" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-129" value="模型集成代码自动化构建与发布流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-128">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-130" value="前端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-128">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-131" value="用户登陆访问&lt;div&gt;模型集成页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-130">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-132" value="用户点击模型编译发布" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-130">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-130" source="epkTv9PBIllWztq9xRfP-134" target="epkTv9PBIllWztq9xRfP-132">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-134" value="用户选择需要构建的模型版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-130">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-135" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-130">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-136" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-130">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-137" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-130" source="epkTv9PBIllWztq9xRfP-131" target="epkTv9PBIllWztq9xRfP-134">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-138" value="后端" style="swimlane;startSize=20;html=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-128">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-139" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-138">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-142" target="epkTv9PBIllWztq9xRfP-147">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-141" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-140">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-142" value="发布成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-138">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-143" value="调用模型集成后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-138">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-144" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-143" target="epkTv9PBIllWztq9xRfP-142">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-145" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-142" target="epkTv9PBIllWztq9xRfP-139">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-146" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="epkTv9PBIllWztq9xRfP-145">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-147" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" vertex="1" parent="epkTv9PBIllWztq9xRfP-138">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-148" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-147" target="epkTv9PBIllWztq9xRfP-136">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-149" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-139" target="epkTv9PBIllWztq9xRfP-135">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-132" target="epkTv9PBIllWztq9xRfP-143">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,611 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="985" dy="562" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="YtNTQt618ny-sFmqOg6v-84" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="800" width="280" height="460" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-25" value="删除服务版本流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry width="280" height="460" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-26" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry y="20" width="140" height="440" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-27" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-28" value="用户点击删除服务版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-31" target="YtNTQt618ny-sFmqOg6v-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-31" value="用户选择服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-35" value="前端表单验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-37" value="验证通过?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="9.999999999999545" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-35" target="YtNTQt618ny-sFmqOg6v-37" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-39" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="330" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-37" target="YtNTQt618ny-sFmqOg6v-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-41" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-40" vertex="1" connectable="0">
<mxGeometry x="-0.1357" relative="1" as="geometry">
<mxPoint x="-10" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-42" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-26" vertex="1">
<mxGeometry x="10" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-28" target="YtNTQt618ny-sFmqOg6v-35" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="60" y="270" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-26" source="YtNTQt618ny-sFmqOg6v-27" target="YtNTQt618ny-sFmqOg6v-31" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-44" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-84" vertex="1">
<mxGeometry x="140" y="20" width="140" height="440" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-62" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-70" target="YtNTQt618ny-sFmqOg6v-75" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-83" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-69" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-47" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-70" value="写入成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-71" value="写入数据库" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-71" target="YtNTQt618ny-sFmqOg6v-70" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-44" source="YtNTQt618ny-sFmqOg6v-70" target="YtNTQt618ny-sFmqOg6v-62" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-74" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-73" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-75" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="YtNTQt618ny-sFmqOg6v-44" vertex="1">
<mxGeometry x="10" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-75" target="YtNTQt618ny-sFmqOg6v-42" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-37" target="YtNTQt618ny-sFmqOg6v-71" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="149.99999999999943" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-81" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-80" vertex="1" connectable="0">
<mxGeometry x="-0.1207" y="-1" relative="1" as="geometry">
<mxPoint x="-11" y="40" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="YtNTQt618ny-sFmqOg6v-84" source="YtNTQt618ny-sFmqOg6v-62" target="YtNTQt618ny-sFmqOg6v-39" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-80" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="1280" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-51" value="服务开发模板代码生成流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-80" vertex="1">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-52" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-80" vertex="1">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-53" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-52" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-54" value="用户点击模板代码生成" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-52" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-52" source="epkTv9PBIllWztq9xRfP-56" target="epkTv9PBIllWztq9xRfP-54" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-56" value="用户选择需要生成代码的服务版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-52" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-60" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-52" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-63" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-52" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-52" source="epkTv9PBIllWztq9xRfP-53" target="epkTv9PBIllWztq9xRfP-56" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-66" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-80" vertex="1">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-67" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-66" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-70" target="epkTv9PBIllWztq9xRfP-75" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-69" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-68" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-70" value="生成成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="epkTv9PBIllWztq9xRfP-66" vertex="1">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-71" value="调用服务开发后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-66" vertex="1">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-71" target="epkTv9PBIllWztq9xRfP-70" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-73" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-66" source="epkTv9PBIllWztq9xRfP-70" target="epkTv9PBIllWztq9xRfP-67" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-74" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-73" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-75" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-66" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-75" target="epkTv9PBIllWztq9xRfP-63" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-67" target="epkTv9PBIllWztq9xRfP-60" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-80" source="epkTv9PBIllWztq9xRfP-54" target="epkTv9PBIllWztq9xRfP-71" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-104" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="1640" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-82" value="服务开发模板代码下载流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-104" vertex="1">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-83" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-104" vertex="1">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-84" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-83" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-85" value="用户点击模板代码下载" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-83" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-86" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-83" source="epkTv9PBIllWztq9xRfP-87" target="epkTv9PBIllWztq9xRfP-85" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-87" value="用户选择需要下载代码的服务版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-83" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-88" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-83" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-89" value="执行下载" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-83" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-83" source="epkTv9PBIllWztq9xRfP-84" target="epkTv9PBIllWztq9xRfP-87" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-91" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-104" vertex="1">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-92" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-91" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-95" target="epkTv9PBIllWztq9xRfP-100" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-94" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-93" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-95" value="压缩成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="epkTv9PBIllWztq9xRfP-91" vertex="1">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-96" value="调用服务开发后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-91" vertex="1">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-97" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-96" target="epkTv9PBIllWztq9xRfP-95" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-98" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-91" source="epkTv9PBIllWztq9xRfP-95" target="epkTv9PBIllWztq9xRfP-92" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-99" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-98" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-100" value="返回成功响应及压缩包路径" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-91" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-100" target="epkTv9PBIllWztq9xRfP-89" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-102" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-92" target="epkTv9PBIllWztq9xRfP-88" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-103" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-104" source="epkTv9PBIllWztq9xRfP-85" target="epkTv9PBIllWztq9xRfP-96" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-105" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="2000" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-106" value="服务开发代码上传流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-105" vertex="1">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-107" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-105" vertex="1">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-108" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-107" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-109" value="用户点击服务代码上传" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-107" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-107" source="epkTv9PBIllWztq9xRfP-111" target="epkTv9PBIllWztq9xRfP-109" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-111" value="用户选择需要上传代码的服务版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-107" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-112" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-107" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-113" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-107" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-114" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-107" source="epkTv9PBIllWztq9xRfP-108" target="epkTv9PBIllWztq9xRfP-111" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-115" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-105" vertex="1">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-116" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-115" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-117" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-119" target="epkTv9PBIllWztq9xRfP-124" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-118" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-117" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-119" value="验证成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="epkTv9PBIllWztq9xRfP-115" vertex="1">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-120" value="调用服务开发后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-115" vertex="1">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-120" target="epkTv9PBIllWztq9xRfP-119" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-115" source="epkTv9PBIllWztq9xRfP-119" target="epkTv9PBIllWztq9xRfP-116" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-123" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-122" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-124" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-115" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-125" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-124" target="epkTv9PBIllWztq9xRfP-113" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-126" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-116" target="epkTv9PBIllWztq9xRfP-112" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-127" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-105" source="epkTv9PBIllWztq9xRfP-109" target="epkTv9PBIllWztq9xRfP-120" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-128" value="" style="group" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1" connectable="0">
<mxGeometry x="20" y="2360" width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-129" value="服务开发代码自动化构建与发布流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-128" vertex="1">
<mxGeometry width="280" height="342" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-130" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-128" vertex="1">
<mxGeometry y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-131" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-130" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-132" value="用户点击服务编译发布" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-130" vertex="1">
<mxGeometry x="9.999999999999545" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-133" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-130" source="epkTv9PBIllWztq9xRfP-134" target="epkTv9PBIllWztq9xRfP-132" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-134" value="用户选择需要构建的服务版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-130" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-135" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-130" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-136" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-130" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-137" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-130" source="epkTv9PBIllWztq9xRfP-131" target="epkTv9PBIllWztq9xRfP-134" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="150" y="50" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-138" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="epkTv9PBIllWztq9xRfP-128" vertex="1">
<mxGeometry x="140" y="20" width="140" height="322" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-139" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-138" vertex="1">
<mxGeometry x="10" y="212" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-142" target="epkTv9PBIllWztq9xRfP-147" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-141" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-140" vertex="1" connectable="0">
<mxGeometry x="-0.4857" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-142" value="发布成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="epkTv9PBIllWztq9xRfP-138" vertex="1">
<mxGeometry x="9.999999999999545" y="152" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-143" value="调用服务开发后端服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-138" vertex="1">
<mxGeometry x="10" y="92" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-144" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-143" target="epkTv9PBIllWztq9xRfP-142" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-145" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-138" source="epkTv9PBIllWztq9xRfP-142" target="epkTv9PBIllWztq9xRfP-139" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="70" y="440" as="sourcePoint" />
<mxPoint x="70" y="460" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-146" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="epkTv9PBIllWztq9xRfP-145" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="10" y="4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-147" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="epkTv9PBIllWztq9xRfP-138" vertex="1">
<mxGeometry x="10" y="272" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-148" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-147" target="epkTv9PBIllWztq9xRfP-136" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-149" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-139" target="epkTv9PBIllWztq9xRfP-135" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-150" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="epkTv9PBIllWztq9xRfP-128" source="epkTv9PBIllWztq9xRfP-132" target="epkTv9PBIllWztq9xRfP-143" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="59.999999999999545" y="230" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="1TJywYTg9ukwW_WQVzSB-2" value="" style="group" vertex="1" connectable="0" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="20" y="20" width="400" height="760" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-155" value="新建/编辑服务版本流程" style="swimlane;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;startSize=20;html=1;container=0;" parent="1TJywYTg9ukwW_WQVzSB-2" vertex="1">
<mxGeometry width="400" height="760" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-156" value="前端" style="swimlane;startSize=20;html=1;container=0;" parent="1TJywYTg9ukwW_WQVzSB-2" vertex="1">
<mxGeometry y="20" width="140" height="740" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-1" value="用户登陆访问&lt;div&gt;服务开发页面&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-2" value="用户选择服务" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="210" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-24" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="JOUyWLhBWD3xtvslN3do-26" target="IF__UzwnMCTeSwNdx4oP-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-26" value="显示服务卡片" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="YtNTQt618ny-sFmqOg6v-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="60" y="329.9999999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-3" value="显示该服务&lt;div&gt;所有版本&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="270" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-160" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="IF__UzwnMCTeSwNdx4oP-2" target="IF__UzwnMCTeSwNdx4oP-3" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="60" y="269.9999999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-0" target="epkTv9PBIllWztq9xRfP-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-0" value="用户选择新建版本或编辑某个版本" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="330" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="IF__UzwnMCTeSwNdx4oP-3" target="epkTv9PBIllWztq9xRfP-0" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-1" target="epkTv9PBIllWztq9xRfP-3" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-1" value="显示服务编辑页面" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="390" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-3" target="epkTv9PBIllWztq9xRfP-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-3" value="用户编辑完成后点击保存" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="450" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-5" value="表单验证" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="510" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-0" value="验证通过?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="9.999999999999545" y="570" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="epkTv9PBIllWztq9xRfP-5" target="JOUyWLhBWD3xtvslN3do-0" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-8" value="显示失败消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="630" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-156" source="JOUyWLhBWD3xtvslN3do-0" target="JOUyWLhBWD3xtvslN3do-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-11" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-10" vertex="1" connectable="0">
<mxGeometry x="-0.1357" relative="1" as="geometry">
<mxPoint x="-10" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-166" value="显示成功消息" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-156" vertex="1">
<mxGeometry x="10" y="690" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-157" value="后端" style="swimlane;startSize=20;html=1;container=0;" parent="1TJywYTg9ukwW_WQVzSB-2" vertex="1">
<mxGeometry x="140" y="20" width="260" height="740" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-16" value="读取数据库中&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;服务数据&lt;/span&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-18" target="JOUyWLhBWD3xtvslN3do-20" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-21" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-21" vertex="1" connectable="0">
<mxGeometry x="-0.6571" y="-1" relative="1" as="geometry">
<mxPoint x="-9" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-18" target="JOUyWLhBWD3xtvslN3do-22" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-22" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-23" vertex="1" connectable="0">
<mxGeometry x="-0.875" y="1" relative="1" as="geometry">
<mxPoint x="-18" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-18" value="读取成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="129.99999999999955" y="30" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="JOUyWLhBWD3xtvslN3do-16" target="JOUyWLhBWD3xtvslN3do-18" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-20" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-22" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="150" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-13" value="写入数据库" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="510" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-12" value="写入成功?" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="9.999999999999545" y="570" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-13" target="YtNTQt618ny-sFmqOg6v-12" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-165" value="返回成功响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="130" y="690" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-12" target="IF__UzwnMCTeSwNdx4oP-165" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="epkTv9PBIllWztq9xRfP-8" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-20" vertex="1" connectable="0">
<mxGeometry x="-0.7412" y="1" relative="1" as="geometry">
<mxPoint x="-22" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-36" value="返回失败响应" style="rounded=1;whiteSpace=wrap;html=1;absoluteArcSize=1;arcSize=14;strokeWidth=1;container=0;" parent="IF__UzwnMCTeSwNdx4oP-157" vertex="1">
<mxGeometry x="10" y="630" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" parent="IF__UzwnMCTeSwNdx4oP-157" source="YtNTQt618ny-sFmqOg6v-12" target="IF__UzwnMCTeSwNdx4oP-36" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="560" y="570" as="sourcePoint" />
<mxPoint x="560" y="590" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="YtNTQt618ny-sFmqOg6v-19" value="否" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="YtNTQt618ny-sFmqOg6v-18" vertex="1" connectable="0">
<mxGeometry x="-0.4571" relative="1" as="geometry">
<mxPoint x="6" y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="IF__UzwnMCTeSwNdx4oP-1" target="JOUyWLhBWD3xtvslN3do-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="JOUyWLhBWD3xtvslN3do-20" target="JOUyWLhBWD3xtvslN3do-24" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="JOUyWLhBWD3xtvslN3do-22" target="JOUyWLhBWD3xtvslN3do-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="IF__UzwnMCTeSwNdx4oP-167" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="IF__UzwnMCTeSwNdx4oP-165" target="IF__UzwnMCTeSwNdx4oP-166" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="JOUyWLhBWD3xtvslN3do-0" target="YtNTQt618ny-sFmqOg6v-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="180" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-6" value="是" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" parent="JOUyWLhBWD3xtvslN3do-5" vertex="1" connectable="0">
<mxGeometry x="-0.1207" y="-1" relative="1" as="geometry">
<mxPoint x="-21" y="14" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="JOUyWLhBWD3xtvslN3do-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1TJywYTg9ukwW_WQVzSB-2" source="IF__UzwnMCTeSwNdx4oP-36" target="JOUyWLhBWD3xtvslN3do-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -0,0 +1,228 @@
# 仿真运行模块设计文档
## 1. 概述
仿真运行模块是 XNSimPortal 系统的核心功能之一,负责组织、调度和监控仿真任务的全流程。该模块支持模型组与服务的自动加载、仿真任务的启动/暂停/终止、实时日志输出、进程状态监控等。前端采用 Web Components 技术,后端提供 RESTful API 及 SSE 实时输出,支持与 DDS、XNEngine 等底层服务集成。
### 1.1 模块组成
- **前端组件**`run-sim.js` - 主组件
- **后端路由**
- `routes/run-simulation.js` - 仿真运行与管理 API
- `routes/configurations.js` - 构型与模型组、服务 API
- `routes/dds-monitor.js` - DDS 监控 API
- `routes/system-control.js` - 引擎控制 API
- `routes/stop-simulation.js` - 仿真终止 API
- `routes/simulation-output.js` - SSE 实时输出 API
- `routes/filesystem.js` - 日志文件读取 API
- **工具类**
- `utils/xnengine-process-utils.js` - 仿真进程管理工具
- `utils/db-utils.js` - 数据库操作工具
### 1.2 技术架构
```
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
│ 前端组件层 │ │ 后端API层 │ │ 底层服务/存储层 │
│ run-sim.js │<-- run-simulation <-- XNEngine
│ │ │ configurations │ │ DDS │
│ │ │ dds-monitor │ │ SQLite │
│ │ │ system-control │ │ 日志文件 │
│ │ │ simulation-output │ │ │
└────────────────────┘ └────────────────────┘ └────────────────────┘
```
## 2. 功能
### 2.1 核心功能
1. **模型组与服务加载**
- 自动加载当前构型下的模型组及其模型
- 自动加载当前构型下的服务及其版本
2. **仿真任务管理**
- 启动仿真/测试
- 暂停/继续仿真
- 终止仿真
- 进程状态检测与自动重连
3. **实时输出与日志**
- SSE 实时输出仿真日志
- 日志文件轮询与增量读取
- ANSI 终端颜色转 HTML
4. **状态监控与反馈**
- DDS 监控初始化与状态检测
- 仿真进程状态轮询
- UI 状态与按钮联动
### 2.2 辅助功能
- 错误与成功提示
- 自动重连机制
- 资源清理与事件解绑
## 3. 性能
### 3.1 性能指标
- **仿真启动响应**< 2s
- **日志输出延迟**< 200ms
- **并发仿真支持**:支持多用户独立仿真
- **内存占用**:前端 < 50MB
### 3.2 性能优化策略
- SSE 实时推送减少轮询压力
- 日志文件增量读取
- 按需加载模型组/服务
- 进程状态本地缓存与重连
## 4. 输入
### 4.1 用户输入
- 构型选择localStorage
- 仿真操作(启动、暂停、终止按钮)
- 运行参数(自动从构型获取)
### 4.2 系统输入
- 当前构型 ID
- 模型组与服务列表
- 仿真进程状态
- 日志文件路径
## 5. 输出
### 5.1 数据输出
- **模型组与服务列表**
```json
[
{
"name": "模型组名",
"groupId": "组ID",
"freq": 100,
"priority": 1,
"cpuAff": 0,
"models": [
{ "className": "模型类名", "version": "1.0.0" }
]
}
]
```
- **服务列表**
```json
[
{ "className": "服务类名", "version": "1.0.0" }
]
```
- **仿真运行结果**
```json
{
"success": true,
"simulationId": "进程ID",
"logFile": "日志文件路径",
"message": "仿真启动成功"
}
```
- **日志内容**
```json
{ "content": "日志文本" }
```
### 5.2 界面输出
- 模型组/服务列表卡片
- 仿真运行输出(带颜色)
- 状态提示(成功/错误/信息)
## 6. 算法
### 6.1 日志文件增量读取算法
```
1. 记录上次读取的文件位置
2. 定时100ms请求后端读取新内容
3. 拼接到前端输出区
4. 若进程结束,读取剩余内容并停止轮询
```
### 6.2 SSE 实时输出处理算法
```
1. 建立 EventSource 连接
2. 监听 output/status/completed/error/terminated 事件
3. 解析数据并更新 UI
4. 断线自动重连最多3次
```
### 6.3 仿真进程状态检测算法
```
1. 定时请求 /api/check-process/:id
2. 若 running=false重置UI
3. 若 running=true保持连接
```
## 7. 流程
### 7.1 仿真运行主流程
```mermaid
graph TD
A[用户点击运行仿真] --> B[获取构型参数]
B --> C[初始化DDS监控]
C --> D[初始化引擎控制]
D --> E[启动仿真进程]
E --> F[建立SSE连接]
F --> G[实时输出日志]
G --> H{仿真状态}
H -->|运行中| G
H -->|结束| I[重置UI]
```
### 7.2 日志输出流程
```mermaid
graph TD
A[仿真进程启动] --> B[生成日志文件]
B --> C[前端定时请求日志内容]
C --> D[后端返回新内容]
D --> E[前端拼接显示]
E --> F{进程状态}
F -->|运行| C
F -->|结束| G[停止轮询]
```
## 8. 接口
所有接口均以/api 为前缀,数据格式为 JSON采用 HTTP/HTTPS 协议。具体接口有:
1. GET /api/configurations/:confID/model-groups1功能获取指定构型下的模型组列表2输入confID路径参数3输出JSON 对象{ success: boolean, message: string, data: array }4说明返回所有模型组及其基本信息。
2. GET /api/model-groups/:groupId/models1功能获取指定模型组下的模型列表2输入groupId路径参数3输出JSON 对象{ success: boolean, message: string, data: array }4说明返回指定模型组下的所有模型及其版本。
3. GET /api/configurations/:confID/services1功能获取指定构型下的服务列表2输入confID路径参数3输出JSON 对象{ success: boolean, message: string, data: array }4说明返回所有服务及其版本信息。
4. POST /api/run-simulation1功能启动仿真或测试任务2输入JSON 对象{ args: array, timeout?: number }3输出JSON 对象{ success: boolean, simulationId: string, logFile: string, message: string }4说明启动仿真进程返回进程ID和日志文件路径。
5. GET /api/check-process/:id1功能检查仿真进程状态2输入id路径参数仿真进程ID3输出JSON 对象{ running: boolean, success: boolean, message: string }4说明返回指定进程是否仍在运行。
6. GET /api/read-log-file1功能读取仿真日志文件内容2输入file查询参数日志文件路径position查询参数起始位置3输出JSON 对象{ content: string }4说明返回日志文件从指定位置开始的新内容。
7. GET /api/check-xnengine1功能检测是否有正在运行的仿真进程2输入无参数3输出JSON 对象{ running: boolean, pid: string, message: string }4说明用于前端自动重连仿真。
8. GET /api/configurations/:confID1功能获取指定构型的详细参数2输入confID路径参数3输出JSON 对象{ success: boolean, message: string, data: object }4说明返回构型的详细参数如DomainID等
9. POST /api/dds-monitor/initialize1功能初始化 DDS 监控2输入JSON 对象{ domainId, confID, forceGen? }3输出JSON 对象{ success: boolean, message: string }4说明初始化 DDS 监控环境。
10. POST /api/system-control/initialize1功能初始化仿真引擎控制2输入无参数3输出JSON 对象{ success: boolean, message: string }4说明初始化仿真引擎控制环境。
11. POST /api/system-control/pause1功能暂停仿真2输入无参数3输出JSON 对象{ success: boolean, message: string }4说明暂停仿真进程。
12. POST /api/system-control/resume1功能继续仿真2输入无参数3输出JSON 对象{ success: boolean, message: string }4说明恢复仿真进程。
13. POST /api/system-control/stop1功能停止仿真2输入无参数3输出JSON 对象{ success: boolean, message: string }4说明停止仿真进程。
14. POST /api/stop-simulation1功能终止仿真并清理资源2输入JSON 对象{ id: string }3输出JSON 对象{ success: boolean, message: string }4说明终止仿真进程并清理相关记录。
15. GET /api/simulation-output/:simulationId
1功能获取仿真实时输出SSE
2输入simulationId路径参数
3输出SSE 事件流output/status/completed/error/terminated
4说明用于前端实时显示仿真输出。
---
如需补充参数字段或详细说明,请告知!

View File

@ -0,0 +1,416 @@
# 模型开发模块设计文档
## 1. 概述
模型开发模块是 XNSimPortal 系统的核心组件之一,负责管理仿真系统中的模型开发全生命周期。该模块提供了从 ATA 章节管理、模型创建、版本控制到代码生成、编译发布的完整工作流程。模块采用前后端分离架构,前端使用 Web Components 技术构建用户界面,后端提供 RESTful API 接口,并与 XNCore 底层服务进行集成。
### 1.1 模块组成
- **前端组件**`model-development.js` - 主组件
- **后端路由**
- `routes/model-dev.js` - 模型开发 API
- **工具类**
- `utils/model-utils.js` - 模型数据操作工具
- `utils/xnCoreService.js` - XNCore 服务集成工具
### 1.2 技术架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端组件层 │ │ 后端API层 │ │ 数据存储层 │ │ XNCore服务层 │
│ │ │ │ │ │ │ │
│ model-development│◄──►│ model-dev │◄──►│ SQLite数据库 │◄──►│ XNModelGenServer│
│ │ │ │ │ ATAChapters │ │ │
│ │ │ │ │ XNModels │ │ │
│ │ │ │ │ XNModelsVersion │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 2. 功能
### 2.1 核心功能
1. **ATA 章节管理**
- ATA 章节浏览和选择
- 章节层级导航
- 章节信息展示
2. **模型管理**
- 模型创建和编辑
- 模型版本控制
- 模型信息维护
3. **版本管理**
- 版本创建和编辑
- 版本比较功能
- 版本历史追踪
4. **代码生成**
- 模板代码生成
- 代码下载
- 代码编译
5. **数据包管理**
- 数据包上传
- 数据包配置
- 接口映射
### 2.2 辅助功能
1. **配置管理**
- 运行节点配置
- 优先级设置
- 运行频率配置
2. **开发工具**
- 命令列表编辑
- 时间选择器
- 结构体映射
3. **用户体验**
- 多级导航
- 卡片式布局
- 实时状态反馈
## 3. 性能
### 3.1 性能指标
- **响应时间**:页面加载 < 1s数据查询 < 500ms
- **并发处理**:支持多用户同时开发
- **数据量支持**:支持大量模型和版本数据
- **内存使用**:前端组件内存占用 < 100MB
### 3.2 性能优化策略
1. **前端优化**
- 虚拟滚动处理大量数据
- 懒加载组件
- 防抖处理用户输入
2. **后端优化**
- 数据库索引优化
- 缓存机制
- 异步处理
3. **代码生成优化**
- 增量编译
- 并行处理
- 资源复用
## 4. 输入
### 4.1 用户输入
1. **模型版本数据**
```
{
ClassName: "模型类名",
Name: "版本名称",
Version: "版本号",
Author: "作者",
PlaneName: "机型名称",
ConfID: "构型ID",
Description: "描述",
RunFreqGroup: "运行频率组",
RunNode: "运行节点",
Priority: "优先级",
DataPackagePath: "数据包路径",
DataPackageName: "数据包名称",
DataPackageHeaderName: "数据包头文件名",
DataPackageEntryPoint: "数据包入口点",
DataPackageInterfaceName: "数据包接口名",
InputStruct: "输入结构体",
OutputStruct: "输出结构体",
HeartStruct: "心跳结构体",
CmdList: "命令列表JSON"
}
```
2. **代码生成参数**
- className模型类名
- version版本号
- planeName机型名称
3. **文件输入**
- 数据包文件
- 包装代码文件
- 配置文件
### 4.2 系统输入
1. **构型选择**
- 从 localStorage 获取当前选择的构型 ID
- 机型信息
2. **配置数据**
- ATA 章节列表
- 模型列表
- 版本列表
## 5. 输出
### 5.1 数据输出
1. **ATA 章节列表**
```json
[
{
"ID": "章节ID",
"Name": "章节名称",
"Name_CN": "章节中文名称"
}
]
```
2. **模型列表**
```json
[
{
"PlaneName": "机型名称",
"Chapters_ID": "章节ID",
"ModelName": "模型名称",
"ModelName_CN": "模型中文名称",
"Description": "描述",
"ClassName": "类名"
}
]
```
3. **版本列表**
```json
[
{
"PlaneName": "机型名称",
"ClassName": "类名",
"Name": "版本名称",
"ConfID": "构型ID",
"Version": "版本号",
"Author": "作者",
"Description": "描述",
"CreatTime": "创建时间",
"ChangeTime": "修改时间",
"RunFreqGroup": "运行频率组",
"RunNode": "运行节点",
"Priority": "优先级",
"DataPackagePath": "数据包路径",
"DataPackageName": "数据包名称",
"DataPackageHeaderName": "数据包头文件名",
"DataPackageEntryPoint": "数据包入口点",
"DataPackageInterfaceName": "数据包接口名",
"InputStruct": "输入结构体",
"OutputStruct": "输出结构体",
"HeartStruct": "心跳结构体",
"CmdList": "命令列表"
}
]
```
4. **操作结果**
```json
{
"success": true,
"message": "操作成功",
"data": {}
}
```
### 5.2 界面输出
1. **章节卡片**:显示 ATA 章节信息
2. **模型卡片**:显示模型基本信息
3. **版本卡片**:显示版本详细信息
4. **版本编辑器**:版本信息编辑表单
5. **代码生成结果**:生成状态和下载链接
## 6. 算法
### 6.1 版本号生成算法
```
输入:现有版本列表
输出:下一个版本号
1. 获取当前版本列表
2. 提取所有版本号
3. 解析版本号格式如v1.0.0
4. 找到最大版本号
5. 递增版本号
6. 返回新版本号
```
### 6.2 结构体映射算法
```
输入:源结构体列表,目标结构体列表
输出:映射关系
1. 分析源结构体字段
2. 分析目标结构体字段
3. 根据字段名称和类型进行匹配
4. 生成映射关系
5. 返回映射配置
```
### 6.3 代码生成算法
```
1. 读取模型版本信息
2. 解析数据包配置
3. 生成模板代码
4. 应用用户配置
5. 生成最终代码
6. 返回代码文件
```
## 7. 流程
### 7.1 模型开发主流程
```mermaid
graph TD
A[用户进入模型开发页面] --> B[加载ATA章节]
B --> C[显示章节卡片]
C --> D[用户选择章节]
D --> E[加载模型列表]
E --> F[显示模型卡片]
F --> G[用户选择模型]
G --> H[加载版本列表]
H --> I[显示版本卡片]
I --> J[用户操作]
J --> K{操作类型}
K -->|创建版本| L[打开版本编辑器]
K -->|编辑版本| M[加载版本数据]
K -->|生成代码| N[调用代码生成]
K -->|编译发布| O[调用编译服务]
L --> P[保存版本]
M --> P
N --> Q[下载代码]
O --> R[发布结果]
P --> S[刷新版本列表]
Q --> S
R --> S
S --> I
```
### 7.2 版本创建流程
```mermaid
graph TD
A[用户点击创建版本] --> B[获取当前时间]
B --> C[生成版本号]
C --> D[初始化版本数据]
D --> E[显示版本编辑器]
E --> F[用户填写信息]
F --> G[验证数据]
G --> H{数据是否有效?}
H -->|否| I[显示错误信息]
H -->|是| J[保存到数据库]
I --> F
J --> K[返回成功结果]
K --> L[刷新版本列表]
```
### 7.3 代码生成流程
```mermaid
graph TD
A[用户点击生成代码] --> B[验证模型信息]
B --> C[调用XNCore服务]
C --> D[生成模板代码]
D --> E[应用用户配置]
E --> F[生成最终代码]
F --> G[压缩代码包]
G --> H[返回下载链接]
H --> I[用户下载代码]
```
## 8. 接口
所有接口均以/api 为前缀,数据格式为 JSON采用 HTTP/HTTPS 协议。具体接口有:
1. GET /api/ata-chapters
1功能获取 ATA 章节列表;
2输入无参数
3输出JSON 对象{ success: boolean, message: string, data: array}
4说明返回所有 ATA 章节信息,包含章节 ID、名称和中文名称。
2. GET /api/chapter-models/:chapterId
1功能获取指定章节的模型列表
2输入chapterId路径参数planeName查询参数
3输出JSON 对象{ success: boolean, message: string, data: array }
4说明返回指定章节和机型下的所有模型信息。
3. GET /api/model-versions/:className
1功能获取指定模型的版本列表
2输入className路径参数planeName查询参数
3输出JSON 对象{ success: boolean, message: string, data: array }
4说明返回指定模型的所有版本信息按版本号降序排列。
4. POST /api/model-versions
1功能保存模型版本信息
2输入JSON 对象,包含版本定义的所有字段;
3输出JSON 对象{ success: boolean, message: string, id: number }
4说明创建新版本或更新现有版本支持 CmdList JSON 格式。
5. POST /api/model-code-gen
1功能生成模型代码
2输入JSON 对象{ className, version, planeName }
3输出JSON 对象{ success: boolean, message: string, result: string }
4说明调用 XNCore 服务生成模型模板代码。
6. POST /api/model-code-zip
1功能压缩模型代码
2输入JSON 对象{ className, version, planeName }
3输出JSON 对象{ success: boolean, message: string, result: string }
4说明将生成的代码压缩成 ZIP 包。
7. POST /api/model-code-unzip
1功能解压模型代码
2输入JSON 对象{ className, version, planeName, srcPath }
3输出JSON 对象{ success: boolean, message: string, result: string }
4说明解压代码包到指定目录。
8. POST /api/model-code-compile
1功能编译模型代码
2输入JSON 对象{ className, version, planeName }
3输出JSON 对象{ success: boolean, message: string, result: string }
4说明编译模型代码并生成可执行文件。
9. POST /api/filesystem/upload-package
1功能上传数据包文件
2输入form-data 格式,包含 confName、folderName 和 files
3输出JSON 对象{ success: boolean, message: string, packagePath: string, headerFile: string, libraryFile: string, entryPoint: string, paramType: string, memberNames: array }
4说明上传数据包文件夹解析头文件和动态库返回配置信息。
10. POST /api/filesystem/upload-zip
1功能上传集成代码 ZIP 文件;
2输入form-data 格式,包含 confName 和 file
3输出JSON 对象{ success: boolean, message: string, file: object }
4说明上传集成代码压缩包支持自动解压功能。
11. POST /api/filesystem/get-struct-members
1功能获取结构体成员信息
2输入JSON 对象{ confName, headerFilePath, structName }
3输出JSON 对象{ success: boolean, message: string, memberNames: array }
4说明解析头文件中的结构体定义返回成员名称列表。
12. GET /api/filesystem/download-zip
1功能下载代码压缩包
2输入filePath查询参数
3输出ZIP 文件流;
4说明下载生成的代码压缩包文件。