未验证 提交 235f2c89 编写于 作者: P Phodal Huang

feat: add arch demo

上级 4080cd7d
......@@ -70,12 +70,27 @@ Available Commands:
```
1. Run `coca analysis`
2. Run Command
### Analysis
```
coca analysis
```
### Arch
```
coca arch
```
Examples Results:
![Architecture demo](docs/sample/arch.svg)
Repo from: [https://github.com/howiehu/ddd-architecture-samples](https://github.com/howiehu/ddd-architecture-samples)
### Find Bad Smells
```bash
......
......@@ -30,8 +30,6 @@ var archCmd = &cobra.Command{
archApp := arch.NewArchApp()
dotContent := archApp.Analysis(parsedDeps, identifiersMap)
fmt.Println(dotContent)
ignores := strings.Split("", ",")
var nodeFilter = func(key string) bool {
for _, f := range ignores {
......
......@@ -66,6 +66,10 @@ func addCallInMethod(clz models.JClassNode, identifiersMap map[string]models.JId
// TODO: add implements, extends support
for _, call := range method.MethodCalls {
dst := call.Package + "." + call.Class
if src == dst {
continue
}
if _, ok := identifiersMap[dst]; ok {
relation := &tequila.Relation{
From: src,
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: G Pages: 1 -->
<svg width="2874pt" height="580pt"
viewBox="0.00 0.00 2874.00 580.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 576)">
<title>G</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-576 2870,-576 2870,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster1</title>
<polygon fill="none" stroke="black" points="1268,-326 1268,-400 1928,-400 1928,-326 1268,-326"/>
<text text-anchor="middle" x="1598" y="-384.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.inbound.rest.resources</text>
</g>
<g id="clust2" class="cluster">
<title>cluster10</title>
<polygon fill="none" stroke="black" points="2129,-162 2129,-236 2420,-236 2420,-162 2129,-162"/>
<text text-anchor="middle" x="2274.5" y="-220.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.inbound.rest.handlers</text>
</g>
<g id="clust3" class="cluster">
<title>cluster11</title>
<polygon fill="none" stroke="black" points="8,-490 8,-564 282,-564 282,-490 8,-490"/>
<text text-anchor="middle" x="145" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.outbound.gateway</text>
</g>
<g id="clust4" class="cluster">
<title>cluster12</title>
<polygon fill="none" stroke="black" points="1774,-244 1774,-318 2017,-318 2017,-244 1774,-244"/>
<text text-anchor="middle" x="1895.5" y="-302.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.core.common</text>
</g>
<g id="clust5" class="cluster">
<title>cluster13</title>
<polygon fill="none" stroke="black" points="802,-408 802,-482 1279,-482 1279,-408 802,-408"/>
<text text-anchor="middle" x="1040.5" y="-466.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.application.usecases</text>
</g>
<g id="clust6" class="cluster">
<title>cluster14</title>
<polygon fill="none" stroke="black" points="1889,-490 1889,-564 2129,-564 2129,-490 1889,-490"/>
<text text-anchor="middle" x="2009" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.inbound.rest</text>
</g>
<g id="clust7" class="cluster">
<title>cluster15</title>
<polygon fill="none" stroke="black" points="2034,-244 2034,-482 2352,-482 2352,-244 2034,-244"/>
<text text-anchor="middle" x="2193" y="-466.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.outbound.persistence.blog</text>
</g>
<g id="clust8" class="cluster">
<title>cluster16</title>
<polygon fill="none" stroke="black" points="2137,-490 2137,-564 2349,-564 2349,-490 2137,-490"/>
<text text-anchor="middle" x="2243" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo</text>
</g>
<g id="clust9" class="cluster">
<title>cluster17</title>
<polygon fill="none" stroke="black" points="43,-408 43,-482 276,-482 276,-408 43,-408"/>
<text text-anchor="middle" x="159.5" y="-466.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.application.gateway</text>
</g>
<g id="clust10" class="cluster">
<title>cluster18</title>
<polygon fill="none" stroke="black" points="358,-162 358,-318 666,-318 666,-162 358,-162"/>
<text text-anchor="middle" x="512" y="-302.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.contexts.usercontext.user</text>
</g>
<g id="clust11" class="cluster">
<title>cluster19</title>
<polygon fill="none" stroke="black" points="706,-326 706,-400 941,-400 941,-326 706,-326"/>
<text text-anchor="middle" x="823.5" y="-384.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.application.concepts</text>
</g>
<g id="clust12" class="cluster">
<title>cluster2</title>
<polygon fill="none" stroke="black" points="796,-8 796,-154 1481,-154 1481,-8 796,-8"/>
<text text-anchor="middle" x="1138.5" y="-138.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.core.concepts</text>
</g>
<g id="clust13" class="cluster">
<title>cluster3</title>
<polygon fill="none" stroke="black" points="1355,-408 1355,-564 1881,-564 1881,-408 1355,-408"/>
<text text-anchor="middle" x="1618" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.inbound.rest.resources.blog</text>
</g>
<g id="clust14" class="cluster">
<title>cluster4</title>
<polygon fill="none" stroke="black" points="2357,-490 2357,-564 2646,-564 2646,-490 2357,-490"/>
<text text-anchor="middle" x="2501.5" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.outbound.persistence</text>
</g>
<g id="clust15" class="cluster">
<title>cluster5</title>
<polygon fill="none" stroke="black" points="949,-162 949,-400 1260,-400 1260,-162 949,-162"/>
<text text-anchor="middle" x="1104.5" y="-384.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.contexts.blogcontext.blog</text>
</g>
<g id="clust16" class="cluster">
<title>cluster6</title>
<polygon fill="none" stroke="black" points="290,-408 290,-564 794,-564 794,-408 290,-408"/>
<text text-anchor="middle" x="542" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.adapters.inbound.rest.resources.publishedblog</text>
</g>
<g id="clust17" class="cluster">
<title>cluster7</title>
<polygon fill="none" stroke="black" points="2654,-490 2654,-564 2858,-564 2858,-490 2654,-490"/>
<text text-anchor="middle" x="2756" y="-548.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.application.dto</text>
</g>
<g id="clust18" class="cluster">
<title>cluster8</title>
<polygon fill="none" stroke="black" points="1268,-162 1268,-236 1642,-236 1642,-162 1268,-162"/>
<text text-anchor="middle" x="1455" y="-220.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.contexts.blogcontext.blog.exceptions</text>
</g>
<g id="clust19" class="cluster">
<title>cluster9</title>
<polygon fill="none" stroke="black" points="1775,-80 1775,-236 2121,-236 2121,-80 1775,-80"/>
<text text-anchor="middle" x="1948" y="-220.8" font-family="Times,serif" font-size="14.00">study.huhao.demo.domain.core.common.excpetions</text>
</g>
<!-- node35 -->
<g id="node1" class="node">
<title>node35</title>
<polygon fill="none" stroke="black" points="274.41,-534 147.59,-534 147.59,-498 274.41,-498 274.41,-534"/>
<text text-anchor="middle" x="211" y="-511.8" font-family="Times,serif" font-size="14.00">DemoGatewayImpl</text>
</g>
<!-- node46 -->
<g id="node2" class="node">
<title>node46</title>
<polygon fill="none" stroke="black" points="263.97,-452 164.03,-452 164.03,-416 263.97,-416 263.97,-452"/>
<text text-anchor="middle" x="214" y="-429.8" font-family="Times,serif" font-size="14.00">DemoGateway</text>
</g>
<!-- node35&#45;&gt;node46 -->
<g id="edge1" class="edge">
<title>node35&#45;&gt;node46</title>
<path fill="none" stroke="black" d="M211.65,-497.64C212.04,-487.3 212.54,-473.94 212.98,-462.22"/>
<polygon fill="black" stroke="black" points="216.48,-462.17 213.36,-452.05 209.49,-461.91 216.48,-462.17"/>
</g>
<!-- node51 -->
<g id="node39" class="node">
<title>node51</title>
<polygon fill="none" stroke="black" points="781.75,-370 716.25,-370 716.25,-334 781.75,-334 781.75,-370"/>
<text text-anchor="middle" x="749" y="-347.8" font-family="Times,serif" font-size="14.00">Gateway</text>
</g>
<!-- node46&#45;&gt;node51 -->
<g id="edge48" class="edge">
<title>node46&#45;&gt;node51</title>
<path fill="none" stroke="black" d="M258.5,-415.88C267.5,-412.89 276.97,-410.08 286,-408 438.05,-373 623.62,-359.53 706.03,-355"/>
<polygon fill="black" stroke="black" points="706.23,-358.5 716.03,-354.47 705.85,-351.51 706.23,-358.5"/>
</g>
<!-- node30 -->
<g id="node3" class="node">
<title>node30</title>
<polygon fill="none" stroke="black" points="1542,-206 1366,-206 1366,-170 1542,-170 1542,-206"/>
<text text-anchor="middle" x="1454" y="-183.8" font-family="Times,serif" font-size="14.00">NoNeedToPublishException</text>
</g>
<!-- node32 -->
<g id="node4" class="node">
<title>node32</title>
<polygon fill="none" stroke="black" points="2002.86,-124 1885.14,-124 1885.14,-88 2002.86,-88 2002.86,-124"/>
<text text-anchor="middle" x="1944" y="-101.8" font-family="Times,serif" font-size="14.00">DomainException</text>
</g>
<!-- node30&#45;&gt;node32 -->
<g id="edge2" class="edge">
<title>node30&#45;&gt;node32</title>
<path fill="none" stroke="black" d="M1542.17,-172.61C1637.58,-157.03 1787.75,-132.51 1874.95,-118.27"/>
<polygon fill="black" stroke="black" points="1875.7,-121.7 1885.01,-116.63 1874.58,-114.79 1875.7,-121.7"/>
</g>
<!-- node48 -->
<g id="node5" class="node">
<title>node48</title>
<polygon fill="none" stroke="black" points="585.42,-288 500.58,-288 500.58,-252 585.42,-252 585.42,-288"/>
<text text-anchor="middle" x="543" y="-265.8" font-family="Times,serif" font-size="14.00">UserService</text>
</g>
<!-- node47 -->
<g id="node6" class="node">
<title>node47</title>
<polygon fill="none" stroke="black" points="625.88,-206 522.12,-206 522.12,-170 625.88,-170 625.88,-206"/>
<text text-anchor="middle" x="574" y="-183.8" font-family="Times,serif" font-size="14.00">UserRepository</text>
</g>
<!-- node48&#45;&gt;node47 -->
<g id="edge3" class="edge">
<title>node48&#45;&gt;node47</title>
<path fill="none" stroke="black" d="M549.73,-251.64C553.82,-241.09 559.12,-227.39 563.73,-215.51"/>
<polygon fill="black" stroke="black" points="567.04,-216.64 567.39,-206.05 560.52,-214.11 567.04,-216.64"/>
</g>
<!-- node8 -->
<g id="node37" class="node">
<title>node8</title>
<polygon fill="none" stroke="black" points="1252.98,-124 1195.02,-124 1195.02,-88 1252.98,-88 1252.98,-124"/>
<text text-anchor="middle" x="1224" y="-101.8" font-family="Times,serif" font-size="14.00">Service</text>
</g>
<!-- node48&#45;&gt;node8 -->
<g id="edge49" class="edge">
<title>node48&#45;&gt;node8</title>
<path fill="none" stroke="black" d="M574.56,-251.94C580.87,-248.98 587.55,-246.17 594,-244 611.6,-238.09 616.86,-239.93 635,-236 773.43,-205.99 804.62,-180.89 945,-162 971.55,-158.43 1162.02,-165.94 1186,-154 1195.48,-149.28 1203.39,-140.97 1209.5,-132.65"/>
<polygon fill="black" stroke="black" points="1212.56,-134.37 1215.2,-124.11 1206.74,-130.48 1212.56,-134.37"/>
</g>
<!-- node9 -->
<g id="node15" class="node">
<title>node9</title>
<polygon fill="none" stroke="black" points="1057.94,-124 980.06,-124 980.06,-88 1057.94,-88 1057.94,-124"/>
<text text-anchor="middle" x="1019" y="-101.8" font-family="Times,serif" font-size="14.00">Repository</text>
</g>
<!-- node47&#45;&gt;node9 -->
<g id="edge26" class="edge">
<title>node47&#45;&gt;node9</title>
<path fill="none" stroke="black" d="M625.91,-175.39C650.63,-170.35 680.71,-164.94 708,-162 737.07,-158.87 944.1,-165.46 971,-154 982.17,-149.24 992.2,-140.58 1000.16,-131.97"/>
<polygon fill="black" stroke="black" points="1002.98,-134.06 1006.87,-124.2 997.68,-129.49 1002.98,-134.06"/>
</g>
<!-- node28 -->
<g id="node7" class="node">
<title>node28</title>
<polygon fill="none" stroke="black" points="709.96,-452 590.04,-452 590.04,-416 709.96,-416 709.96,-452"/>
<text text-anchor="middle" x="650" y="-429.8" font-family="Times,serif" font-size="14.00">PublishedBlogDto</text>
</g>
<!-- node4 -->
<g id="node8" class="node">
<title>node4</title>
<polygon fill="none" stroke="black" points="1820.16,-370 1729.84,-370 1729.84,-334 1820.16,-334 1820.16,-370"/>
<text text-anchor="middle" x="1775" y="-347.8" font-family="Times,serif" font-size="14.00">ResponseDto</text>
</g>
<!-- node28&#45;&gt;node4 -->
<g id="edge4" class="edge">
<title>node28&#45;&gt;node4</title>
<path fill="none" stroke="black" d="M709.85,-420.67C736.68,-415.72 768.8,-410.58 798,-408 823.54,-405.75 1697.03,-409.09 1721,-400 1733.35,-395.32 1744.75,-386.43 1753.86,-377.63"/>
<polygon fill="black" stroke="black" points="1756.48,-379.96 1760.95,-370.35 1751.46,-375.07 1756.48,-379.96"/>
</g>
<!-- node21 -->
<g id="node10" class="node">
<title>node21</title>
<polygon fill="none" stroke="black" points="1252,-288 1198,-288 1198,-252 1252,-252 1252,-288"/>
<text text-anchor="middle" x="1225" y="-265.8" font-family="Times,serif" font-size="14.00">Blog</text>
</g>
<!-- node28&#45;&gt;node21 -->
<g id="edge12" class="edge">
<title>node28&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M657.76,-415.86C671.23,-386.3 697.87,-328.64 702,-326 721.62,-313.46 1098.29,-323.12 1121,-318 1144.59,-312.68 1169.32,-301.75 1188.74,-291.77"/>
<polygon fill="black" stroke="black" points="1190.62,-294.74 1197.83,-286.98 1187.35,-288.55 1190.62,-294.74"/>
</g>
<!-- node24 -->
<g id="node25" class="node">
<title>node24</title>
<polygon fill="none" stroke="black" points="1252.46,-206 1153.54,-206 1153.54,-170 1252.46,-170 1252.46,-206"/>
<text text-anchor="middle" x="1203" y="-183.8" font-family="Times,serif" font-size="14.00">PublishedBlog</text>
</g>
<!-- node28&#45;&gt;node24 -->
<g id="edge45" class="edge">
<title>node28&#45;&gt;node24</title>
<path fill="none" stroke="black" d="M646.89,-415.8C643.72,-392.46 641.99,-350.8 664,-326 727.59,-254.36 1016.41,-211.47 1143.12,-195.8"/>
<polygon fill="black" stroke="black" points="1143.91,-199.23 1153.41,-194.55 1143.06,-192.28 1143.91,-199.23"/>
</g>
<!-- node11 -->
<g id="node36" class="node">
<title>node11</title>
<polygon fill="none" stroke="black" points="1473.42,-124 1374.58,-124 1374.58,-88 1473.42,-88 1473.42,-124"/>
<text text-anchor="middle" x="1424" y="-101.8" font-family="Times,serif" font-size="14.00">HumbleObject</text>
</g>
<!-- node4&#45;&gt;node11 -->
<g id="edge41" class="edge">
<title>node4&#45;&gt;node11</title>
<path fill="none" stroke="black" d="M1755.01,-333.95C1750.05,-329.12 1745.01,-323.63 1741,-318 1696.58,-255.65 1727.65,-209.98 1668,-162 1640.04,-139.51 1546.45,-123.13 1483.65,-114.35"/>
<polygon fill="black" stroke="black" points="1483.85,-110.84 1473.47,-112.95 1482.9,-117.78 1483.85,-110.84"/>
</g>
<!-- node42 -->
<g id="node9" class="node">
<title>node42</title>
<polygon fill="none" stroke="black" points="2255.62,-370 2194.38,-370 2194.38,-334 2255.62,-334 2255.62,-370"/>
<text text-anchor="middle" x="2225" y="-347.8" font-family="Times,serif" font-size="14.00">BlogPO</text>
</g>
<!-- node42&#45;&gt;node21 -->
<g id="edge5" class="edge">
<title>node42&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M2202.33,-333.93C2196.91,-330.7 2190.97,-327.77 2185,-326 2162.9,-319.43 1793.03,-319.21 1770,-318 1578.62,-307.91 1350.31,-284.52 1262.21,-275.07"/>
<polygon fill="black" stroke="black" points="1262.49,-271.58 1252.18,-273.99 1261.74,-278.54 1262.49,-271.58"/>
</g>
<!-- node43 -->
<g id="node24" class="node">
<title>node43</title>
<polygon fill="none" stroke="black" points="2216.35,-288 2099.65,-288 2099.65,-252 2216.35,-252 2216.35,-288"/>
<text text-anchor="middle" x="2158" y="-265.8" font-family="Times,serif" font-size="14.00">PublishedBlogPO</text>
</g>
<!-- node42&#45;&gt;node43 -->
<g id="edge38" class="edge">
<title>node42&#45;&gt;node43</title>
<path fill="none" stroke="black" d="M2210.46,-333.64C2201.18,-322.56 2189,-308.02 2178.72,-295.74"/>
<polygon fill="black" stroke="black" points="2181.38,-293.47 2172.28,-288.05 2176.02,-297.96 2181.38,-293.47"/>
</g>
<!-- node21&#45;&gt;node30 -->
<g id="edge21" class="edge">
<title>node21&#45;&gt;node30</title>
<path fill="none" stroke="black" d="M1252.17,-259.51C1287.34,-247.22 1349.59,-225.48 1395.68,-209.37"/>
<polygon fill="black" stroke="black" points="1396.97,-212.63 1405.26,-206.03 1394.66,-206.02 1396.97,-212.63"/>
</g>
<!-- node21&#45;&gt;node24 -->
<g id="edge28" class="edge">
<title>node21&#45;&gt;node24</title>
<path fill="none" stroke="black" d="M1220.23,-251.64C1217.35,-241.19 1213.63,-227.67 1210.39,-215.86"/>
<polygon fill="black" stroke="black" points="1213.72,-214.76 1207.69,-206.05 1206.97,-216.62 1213.72,-214.76"/>
</g>
<!-- node13 -->
<g id="node32" class="node">
<title>node13</title>
<polygon fill="none" stroke="black" points="1176.53,-124 1075.47,-124 1075.47,-88 1176.53,-88 1176.53,-124"/>
<text text-anchor="middle" x="1126" y="-101.8" font-family="Times,serif" font-size="14.00">AggregateRoot</text>
</g>
<!-- node21&#45;&gt;node13 -->
<g id="edge58" class="edge">
<title>node21&#45;&gt;node13</title>
<path fill="none" stroke="black" d="M1197.81,-264.85C1180.01,-260.65 1157.76,-252.34 1145,-236 1122.27,-206.89 1120.8,-162.49 1122.72,-134.11"/>
<polygon fill="black" stroke="black" points="1126.21,-134.35 1123.58,-124.08 1119.23,-133.74 1126.21,-134.35"/>
</g>
<!-- node41 -->
<g id="node11" class="node">
<title>node41</title>
<polygon fill="none" stroke="black" points="2190.61,-452 2059.39,-452 2059.39,-416 2190.61,-416 2190.61,-452"/>
<text text-anchor="middle" x="2125" y="-429.8" font-family="Times,serif" font-size="14.00">BlogRepositoryImpl</text>
</g>
<!-- node41&#45;&gt;node42 -->
<g id="edge56" class="edge">
<title>node41&#45;&gt;node42</title>
<path fill="none" stroke="black" d="M2161.26,-415.82C2169.44,-411.21 2177.81,-405.86 2185,-400 2192.68,-393.73 2200.04,-385.86 2206.3,-378.35"/>
<polygon fill="black" stroke="black" points="2209.11,-380.44 2212.62,-370.45 2203.64,-376.07 2209.11,-380.44"/>
</g>
<!-- node41&#45;&gt;node21 -->
<g id="edge36" class="edge">
<title>node41&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M2098.4,-415.75C2092.28,-411.07 2086.08,-405.71 2081,-400 2055.72,-371.57 2070.68,-345.46 2038,-326 2025.2,-318.38 1784.87,-318.86 1770,-318 1578.68,-306.9 1350.34,-284.1 1262.22,-274.94"/>
<polygon fill="black" stroke="black" points="1262.49,-271.45 1252.18,-273.89 1261.76,-278.41 1262.49,-271.45"/>
</g>
<!-- node22 -->
<g id="node12" class="node">
<title>node22</title>
<polygon fill="none" stroke="black" points="1112.17,-288 1007.83,-288 1007.83,-252 1112.17,-252 1112.17,-288"/>
<text text-anchor="middle" x="1060" y="-265.8" font-family="Times,serif" font-size="14.00">BlogRepository</text>
</g>
<!-- node41&#45;&gt;node22 -->
<g id="edge6" class="edge">
<title>node41&#45;&gt;node22</title>
<path fill="none" stroke="black" d="M2073.47,-415.86C2061.57,-411.25 2049.14,-405.89 2038,-400 1987.2,-373.16 1986.71,-343.53 1932,-326 1892.69,-313.4 1229.61,-325.39 1189,-318 1160.53,-312.82 1130.06,-301.98 1105.88,-292.02"/>
<polygon fill="black" stroke="black" points="1107.18,-288.77 1096.61,-288.12 1104.46,-295.22 1107.18,-288.77"/>
</g>
<!-- node44 -->
<g id="node38" class="node">
<title>node44</title>
<polygon fill="none" stroke="black" points="2176.27,-370 2089.73,-370 2089.73,-334 2176.27,-334 2176.27,-370"/>
<text text-anchor="middle" x="2133" y="-347.8" font-family="Times,serif" font-size="14.00">BlogMapper</text>
</g>
<!-- node41&#45;&gt;node44 -->
<g id="edge46" class="edge">
<title>node41&#45;&gt;node44</title>
<path fill="none" stroke="black" d="M2126.74,-415.64C2127.77,-405.3 2129.11,-391.94 2130.28,-380.22"/>
<polygon fill="black" stroke="black" points="2133.78,-380.35 2131.29,-370.05 2126.82,-379.65 2133.78,-380.35"/>
</g>
<!-- node22&#45;&gt;node9 -->
<g id="edge8" class="edge">
<title>node22&#45;&gt;node9</title>
<path fill="none" stroke="black" d="M1055.69,-251.97C1048.6,-223.97 1034.43,-167.96 1025.92,-134.35"/>
<polygon fill="black" stroke="black" points="1029.22,-133.13 1023.38,-124.29 1022.44,-134.84 1029.22,-133.13"/>
</g>
<!-- node39 -->
<g id="node13" class="node">
<title>node39</title>
<polygon fill="none" stroke="black" points="992.43,-452 809.57,-452 809.57,-416 992.43,-416 992.43,-452"/>
<text text-anchor="middle" x="901" y="-429.8" font-family="Times,serif" font-size="14.00">QueryPublishedBlogUseCase</text>
</g>
<!-- node23 -->
<g id="node14" class="node">
<title>node23</title>
<polygon fill="none" stroke="black" points="1115.71,-370 1030.29,-370 1030.29,-334 1115.71,-334 1115.71,-370"/>
<text text-anchor="middle" x="1073" y="-347.8" font-family="Times,serif" font-size="14.00">BlogService</text>
</g>
<!-- node39&#45;&gt;node23 -->
<g id="edge7" class="edge">
<title>node39&#45;&gt;node23</title>
<path fill="none" stroke="black" d="M937.9,-415.84C963.97,-403.71 999.1,-387.37 1027,-374.39"/>
<polygon fill="black" stroke="black" points="1028.57,-377.52 1036.16,-370.13 1025.62,-371.18 1028.57,-377.52"/>
</g>
<!-- node50 -->
<g id="node29" class="node">
<title>node50</title>
<polygon fill="none" stroke="black" points="933.49,-370 868.51,-370 868.51,-334 933.49,-334 933.49,-370"/>
<text text-anchor="middle" x="901" y="-347.8" font-family="Times,serif" font-size="14.00">UseCase</text>
</g>
<!-- node39&#45;&gt;node50 -->
<g id="edge24" class="edge">
<title>node39&#45;&gt;node50</title>
<path fill="none" stroke="black" d="M901,-415.64C901,-405.3 901,-391.94 901,-380.22"/>
<polygon fill="black" stroke="black" points="904.5,-380.05 901,-370.05 897.5,-380.05 904.5,-380.05"/>
</g>
<!-- node23&#45;&gt;node21 -->
<g id="edge47" class="edge">
<title>node23&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M1105.61,-333.84C1130,-321 1163.37,-303.44 1188.63,-290.14"/>
<polygon fill="black" stroke="black" points="1190.31,-293.21 1197.53,-285.46 1187.05,-287.02 1190.31,-293.21"/>
</g>
<!-- node23&#45;&gt;node22 -->
<g id="edge29" class="edge">
<title>node23&#45;&gt;node22</title>
<path fill="none" stroke="black" d="M1070.18,-333.64C1068.5,-323.3 1066.33,-309.94 1064.42,-298.22"/>
<polygon fill="black" stroke="black" points="1067.83,-297.36 1062.77,-288.05 1060.92,-298.48 1067.83,-297.36"/>
</g>
<!-- node31 -->
<g id="node30" class="node">
<title>node31</title>
<polygon fill="none" stroke="black" points="2112.77,-206 1949.23,-206 1949.23,-170 2112.77,-170 2112.77,-206"/>
<text text-anchor="middle" x="2031" y="-183.8" font-family="Times,serif" font-size="14.00">EntityNotFoundException</text>
</g>
<!-- node23&#45;&gt;node31 -->
<g id="edge22" class="edge">
<title>node23&#45;&gt;node31</title>
<path fill="none" stroke="black" d="M1102.98,-333.89C1110,-330.66 1117.59,-327.75 1125,-326 1182.32,-312.48 1598.62,-335.04 1655,-318 1713.18,-300.42 1712.11,-262.51 1770,-244 1806.02,-232.48 1903.47,-245.79 1940,-236 1959.71,-230.72 1980.03,-220.73 1996.46,-211.31"/>
<polygon fill="black" stroke="black" points="1998.33,-214.27 2005.16,-206.17 1994.77,-208.25 1998.33,-214.27"/>
</g>
<!-- node23&#45;&gt;node8 -->
<g id="edge42" class="edge">
<title>node23&#45;&gt;node8</title>
<path fill="none" stroke="black" d="M1103.6,-333.88C1110.45,-330.73 1117.82,-327.86 1125,-326 1183.61,-310.82 1201,-326.11 1261,-318 1434.37,-294.57 1535.93,-371.98 1646,-236 1666.69,-210.44 1669.01,-185.5 1646,-162 1631.07,-146.76 1281.16,-163.39 1262,-154 1252.49,-149.34 1244.57,-141.04 1238.47,-132.71"/>
<polygon fill="black" stroke="black" points="1241.23,-130.54 1232.77,-124.16 1235.4,-134.42 1241.23,-130.54"/>
</g>
<!-- node15 -->
<g id="node16" class="node">
<title>node15</title>
<polygon fill="none" stroke="black" points="1832.23,-452 1767.77,-452 1767.77,-416 1832.23,-416 1832.23,-452"/>
<text text-anchor="middle" x="1800" y="-429.8" font-family="Times,serif" font-size="14.00">BlogDto</text>
</g>
<!-- node15&#45;&gt;node4 -->
<g id="edge43" class="edge">
<title>node15&#45;&gt;node4</title>
<path fill="none" stroke="black" d="M1794.58,-415.64C1791.31,-405.19 1787.08,-391.67 1783.39,-379.86"/>
<polygon fill="black" stroke="black" points="1786.65,-378.55 1780.33,-370.05 1779.97,-380.64 1786.65,-378.55"/>
</g>
<!-- node15&#45;&gt;node21 -->
<g id="edge9" class="edge">
<title>node15&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M1832.37,-429.44C1867.39,-424.85 1919.86,-415.55 1932,-400 1952.24,-374.08 1954.68,-349.82 1932,-326 1925.79,-319.47 1778.99,-318.61 1770,-318 1578.79,-305.04 1350.39,-283.31 1262.24,-274.69"/>
<polygon fill="black" stroke="black" points="1262.49,-271.19 1252.19,-273.7 1261.8,-278.16 1262.49,-271.19"/>
</g>
<!-- node17 -->
<g id="node17" class="node">
<title>node17</title>
<polygon fill="none" stroke="black" points="1480.6,-534 1363.4,-534 1363.4,-498 1480.6,-498 1480.6,-534"/>
<text text-anchor="middle" x="1422" y="-511.8" font-family="Times,serif" font-size="14.00">BlogSubResource</text>
</g>
<!-- node17&#45;&gt;node15 -->
<g id="edge19" class="edge">
<title>node17&#45;&gt;node15</title>
<path fill="none" stroke="black" d="M1464.8,-497.97C1473.07,-495.04 1481.74,-492.23 1490,-490 1583.83,-464.64 1696.88,-447.97 1757.18,-440.16"/>
<polygon fill="black" stroke="black" points="1757.98,-443.59 1767.45,-438.85 1757.09,-436.64 1757.98,-443.59"/>
</g>
<!-- node37 -->
<g id="node18" class="node">
<title>node37</title>
<polygon fill="none" stroke="black" points="1125.55,-452 1010.45,-452 1010.45,-416 1125.55,-416 1125.55,-452"/>
<text text-anchor="middle" x="1068" y="-429.8" font-family="Times,serif" font-size="14.00">EditBlogUseCase</text>
</g>
<!-- node17&#45;&gt;node37 -->
<g id="edge10" class="edge">
<title>node17&#45;&gt;node37</title>
<path fill="none" stroke="black" d="M1363.31,-511.74C1291.54,-507.16 1174.58,-497.58 1134,-482 1119.73,-476.52 1105.69,-467.23 1094.25,-458.35"/>
<polygon fill="black" stroke="black" points="1096.39,-455.58 1086.41,-452.01 1091.99,-461.02 1096.39,-455.58"/>
</g>
<!-- node38 -->
<g id="node28" class="node">
<title>node38</title>
<polygon fill="none" stroke="black" points="1270.7,-452 1143.3,-452 1143.3,-416 1270.7,-416 1270.7,-452"/>
<text text-anchor="middle" x="1207" y="-429.8" font-family="Times,serif" font-size="14.00">QueryBlogUseCase</text>
</g>
<!-- node17&#45;&gt;node38 -->
<g id="edge35" class="edge">
<title>node17&#45;&gt;node38</title>
<path fill="none" stroke="black" d="M1376.14,-497.94C1342.89,-485.56 1297.74,-468.77 1262.46,-455.64"/>
<polygon fill="black" stroke="black" points="1263.38,-452.24 1252.79,-452.04 1260.94,-458.81 1263.38,-452.24"/>
</g>
<!-- node37&#45;&gt;node23 -->
<g id="edge17" class="edge">
<title>node37&#45;&gt;node23</title>
<path fill="none" stroke="black" d="M1069.08,-415.64C1069.73,-405.3 1070.57,-391.94 1071.3,-380.22"/>
<polygon fill="black" stroke="black" points="1074.8,-380.25 1071.93,-370.05 1067.82,-379.81 1074.8,-380.25"/>
</g>
<!-- node37&#45;&gt;node50 -->
<g id="edge27" class="edge">
<title>node37&#45;&gt;node50</title>
<path fill="none" stroke="black" d="M1026.63,-415.98C1018.25,-412.99 1009.42,-410.15 1001,-408 976.64,-401.79 967.3,-411.61 945,-400 934.93,-394.76 925.93,-386.28 918.73,-377.96"/>
<polygon fill="black" stroke="black" points="921.41,-375.71 912.4,-370.14 915.97,-380.11 921.41,-375.71"/>
</g>
<!-- node18 -->
<g id="node19" class="node">
<title>node18</title>
<polygon fill="none" stroke="black" points="1623.36,-534 1498.64,-534 1498.64,-498 1623.36,-498 1623.36,-534"/>
<text text-anchor="middle" x="1561" y="-511.8" font-family="Times,serif" font-size="14.00">CreateBlogRequest</text>
</g>
<!-- node3 -->
<g id="node20" class="node">
<title>node3</title>
<polygon fill="none" stroke="black" points="1920.1,-370 1837.9,-370 1837.9,-334 1920.1,-334 1920.1,-370"/>
<text text-anchor="middle" x="1879" y="-347.8" font-family="Times,serif" font-size="14.00">RequestDto</text>
</g>
<!-- node18&#45;&gt;node3 -->
<g id="edge11" class="edge">
<title>node18&#45;&gt;node3</title>
<path fill="none" stroke="black" d="M1577.21,-497.83C1602.01,-472.87 1652.08,-427.42 1705,-408 1756.84,-388.97 1778.34,-421.99 1829,-400 1840.5,-395.01 1850.99,-386.19 1859.36,-377.52"/>
<polygon fill="black" stroke="black" points="1862.01,-379.81 1866.14,-370.05 1856.83,-375.1 1862.01,-379.81"/>
</g>
<!-- node3&#45;&gt;node11 -->
<g id="edge40" class="edge">
<title>node3&#45;&gt;node11</title>
<path fill="none" stroke="black" d="M1848.72,-333.88C1842.36,-330.86 1835.58,-328.03 1829,-326 1803.71,-318.2 1790.9,-334.23 1770,-318 1741.97,-296.24 1753.97,-276.62 1740,-244 1724.26,-207.24 1734.32,-186.85 1703,-162 1669.73,-135.6 1555.18,-119.85 1483.61,-112.35"/>
<polygon fill="black" stroke="black" points="1483.68,-108.84 1473.38,-111.3 1482.97,-115.8 1483.68,-108.84"/>
</g>
<!-- node25 -->
<g id="node21" class="node">
<title>node25</title>
<polygon fill="none" stroke="black" points="470.33,-534 297.67,-534 297.67,-498 470.33,-498 470.33,-534"/>
<text text-anchor="middle" x="384" y="-511.8" font-family="Times,serif" font-size="14.00">PublishedBlogSubResource</text>
</g>
<!-- node25&#45;&gt;node28 -->
<g id="edge37" class="edge">
<title>node25&#45;&gt;node28</title>
<path fill="none" stroke="black" d="M440.74,-497.94C482.58,-485.35 539.64,-468.19 583.61,-454.97"/>
<polygon fill="black" stroke="black" points="584.78,-458.27 593.35,-452.04 582.77,-451.57 584.78,-458.27"/>
</g>
<!-- node25&#45;&gt;node39 -->
<g id="edge13" class="edge">
<title>node25&#45;&gt;node39</title>
<path fill="none" stroke="black" d="M440.07,-497.94C452.76,-494.73 466.25,-491.81 479,-490 549.21,-480.02 728.9,-497.93 798,-482 820.55,-476.8 844.14,-466.44 863.05,-456.77"/>
<polygon fill="black" stroke="black" points="864.71,-459.85 871.93,-452.1 861.45,-453.66 864.71,-459.85"/>
</g>
<!-- node14 -->
<g id="node22" class="node">
<title>node14</title>
<polygon fill="none" stroke="black" points="1872.82,-534 1777.18,-534 1777.18,-498 1872.82,-498 1872.82,-534"/>
<text text-anchor="middle" x="1825" y="-511.8" font-family="Times,serif" font-size="14.00">BlogResource</text>
</g>
<!-- node14&#45;&gt;node21 -->
<g id="edge34" class="edge">
<title>node14&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M1851.81,-497.99C1903.62,-463.15 2007.85,-382.24 1954,-326 1946.92,-318.61 1780.21,-318.66 1770,-318 1578.76,-305.6 1350.37,-283.55 1262.23,-274.76"/>
<polygon fill="black" stroke="black" points="1262.49,-271.27 1252.19,-273.76 1261.79,-278.23 1262.49,-271.27"/>
</g>
<!-- node14&#45;&gt;node15 -->
<g id="edge33" class="edge">
<title>node14&#45;&gt;node15</title>
<path fill="none" stroke="black" d="M1819.58,-497.64C1816.31,-487.19 1812.08,-473.67 1808.39,-461.86"/>
<polygon fill="black" stroke="black" points="1811.65,-460.55 1805.33,-452.05 1804.97,-462.64 1811.65,-460.55"/>
</g>
<!-- node14&#45;&gt;node37 -->
<g id="edge14" class="edge">
<title>node14&#45;&gt;node37</title>
<path fill="none" stroke="black" d="M1791.99,-497.88C1784.31,-494.64 1776.03,-491.74 1768,-490 1733.57,-482.55 1167.48,-492.94 1134,-482 1119.26,-477.18 1104.97,-467.8 1093.49,-458.68"/>
<polygon fill="black" stroke="black" points="1095.57,-455.86 1085.65,-452.15 1091.09,-461.24 1095.57,-455.86"/>
</g>
<!-- node14&#45;&gt;node38 -->
<g id="edge44" class="edge">
<title>node14&#45;&gt;node38</title>
<path fill="none" stroke="black" d="M1791.98,-497.92C1784.3,-494.68 1776.02,-491.76 1768,-490 1677.48,-470.11 1442.39,-497.44 1351,-482 1319.25,-476.64 1284.92,-465.65 1257.75,-455.65"/>
<polygon fill="black" stroke="black" points="1258.67,-452.25 1248.08,-452.02 1256.21,-458.81 1258.67,-452.25"/>
</g>
<!-- node26 -->
<g id="node23" class="node">
<title>node26</title>
<polygon fill="none" stroke="black" points="638.05,-534 487.95,-534 487.95,-498 638.05,-498 638.05,-534"/>
<text text-anchor="middle" x="563" y="-511.8" font-family="Times,serif" font-size="14.00">PublishedBlogResource</text>
</g>
<!-- node26&#45;&gt;node28 -->
<g id="edge51" class="edge">
<title>node26&#45;&gt;node28</title>
<path fill="none" stroke="black" d="M581.88,-497.64C594.16,-486.35 610.35,-471.46 623.86,-459.04"/>
<polygon fill="black" stroke="black" points="626.47,-461.4 631.46,-452.05 621.73,-456.24 626.47,-461.4"/>
</g>
<!-- node26&#45;&gt;node21 -->
<g id="edge15" class="edge">
<title>node26&#45;&gt;node21</title>
<path fill="none" stroke="black" d="M612.23,-497.88C623.52,-494.65 635.57,-491.74 647,-490 664.47,-487.34 1270.59,-494.57 1283,-482 1306.11,-458.6 1301.19,-435.4 1283,-408 1277.93,-400.37 1270.13,-406.81 1264,-400 1238.46,-371.63 1229.63,-327.02 1226.59,-298.4"/>
<polygon fill="black" stroke="black" points="1230.06,-297.93 1225.68,-288.28 1223.09,-298.55 1230.06,-297.93"/>
</g>
<!-- node26&#45;&gt;node37 -->
<g id="edge55" class="edge">
<title>node26&#45;&gt;node37</title>
<path fill="none" stroke="black" d="M612.24,-497.97C623.53,-494.73 635.58,-491.8 647,-490 685.87,-483.89 963.62,-494.27 1001,-482 1015.88,-477.11 1030.37,-467.72 1042.05,-458.61"/>
<polygon fill="black" stroke="black" points="1044.49,-461.13 1050.02,-452.09 1040.06,-455.71 1044.49,-461.13"/>
</g>
<!-- node43&#45;&gt;node24 -->
<g id="edge16" class="edge">
<title>node43&#45;&gt;node24</title>
<path fill="none" stroke="black" d="M2099.64,-256.09C2075.44,-251.33 2046.99,-246.49 2021,-244 1979.13,-239.99 1303.74,-249.77 1264,-236 1250.31,-231.26 1237.28,-222.11 1226.8,-213.13"/>
<polygon fill="black" stroke="black" points="1229.09,-210.48 1219.32,-206.38 1224.4,-215.67 1229.09,-210.48"/>
</g>
<!-- node7 -->
<g id="node33" class="node">
<title>node7</title>
<polygon fill="none" stroke="black" points="1356.69,-124 1271.31,-124 1271.31,-88 1356.69,-88 1356.69,-124"/>
<text text-anchor="middle" x="1314" y="-101.8" font-family="Times,serif" font-size="14.00">ValueObject</text>
</g>
<!-- node24&#45;&gt;node7 -->
<g id="edge30" class="edge">
<title>node24&#45;&gt;node7</title>
<path fill="none" stroke="black" d="M1236.57,-169.94C1245.1,-165.14 1254.09,-159.68 1262,-154 1271.54,-147.16 1281.27,-138.8 1289.7,-131.03"/>
<polygon fill="black" stroke="black" points="1292.15,-133.54 1297.03,-124.13 1287.35,-128.44 1292.15,-133.54"/>
</g>
<!-- node20 -->
<g id="node26" class="node">
<title>node20</title>
<polygon fill="none" stroke="black" points="1219.99,-370 1134.01,-370 1134.01,-334 1219.99,-334 1219.99,-370"/>
<text text-anchor="middle" x="1177" y="-347.8" font-family="Times,serif" font-size="14.00">BlogCriteria</text>
</g>
<!-- node36 -->
<g id="node27" class="node">
<title>node36</title>
<polygon fill="none" stroke="black" points="1841.26,-288 1782.74,-288 1782.74,-252 1841.26,-252 1841.26,-288"/>
<text text-anchor="middle" x="1812" y="-265.8" font-family="Times,serif" font-size="14.00">Criteria</text>
</g>
<!-- node20&#45;&gt;node36 -->
<g id="edge18" class="edge">
<title>node20&#45;&gt;node36</title>
<path fill="none" stroke="black" d="M1220.32,-336.14C1234.11,-332.07 1249.55,-328.17 1264,-326 1358.29,-311.82 1599.5,-336.7 1693,-318 1720.83,-312.43 1750.51,-300.72 1773.28,-290.38"/>
<polygon fill="black" stroke="black" points="1774.99,-293.44 1782.58,-286.05 1772.04,-287.09 1774.99,-293.44"/>
</g>
<!-- node38&#45;&gt;node22 -->
<g id="edge52" class="edge">
<title>node38&#45;&gt;node22</title>
<path fill="none" stroke="black" d="M1163.73,-415.91C1154.38,-412.81 1144.46,-409.94 1135,-408 1122.56,-405.45 1029.66,-409.29 1021,-400 998.57,-375.94 1011.02,-357.34 1021,-326 1024.39,-315.35 1030.68,-304.99 1037.23,-296.19"/>
<polygon fill="black" stroke="black" points="1040.04,-298.28 1043.51,-288.27 1034.55,-293.94 1040.04,-298.28"/>
</g>
<!-- node38&#45;&gt;node23 -->
<g id="edge23" class="edge">
<title>node38&#45;&gt;node23</title>
<path fill="none" stroke="black" d="M1156.63,-415.99C1145.84,-411.46 1134.76,-406.1 1125,-400 1114.89,-393.68 1104.9,-385.31 1096.42,-377.39"/>
<polygon fill="black" stroke="black" points="1098.72,-374.74 1089.09,-370.31 1093.85,-379.77 1098.72,-374.74"/>
</g>
<!-- node38&#45;&gt;node20 -->
<g id="edge57" class="edge">
<title>node38&#45;&gt;node20</title>
<path fill="none" stroke="black" d="M1200.49,-415.64C1196.53,-405.09 1191.4,-391.39 1186.94,-379.51"/>
<polygon fill="black" stroke="black" points="1190.18,-378.18 1183.39,-370.05 1183.63,-380.64 1190.18,-378.18"/>
</g>
<!-- node38&#45;&gt;node50 -->
<g id="edge20" class="edge">
<title>node38&#45;&gt;node50</title>
<path fill="none" stroke="black" d="M1164.54,-415.96C1154.97,-412.77 1144.75,-409.86 1135,-408 1114.24,-404.05 964.2,-408.81 945,-400 934.53,-395.2 925.36,-386.64 918.14,-378.14"/>
<polygon fill="black" stroke="black" points="920.77,-375.82 911.83,-370.12 915.26,-380.14 920.77,-375.82"/>
</g>
<!-- node31&#45;&gt;node32 -->
<g id="edge39" class="edge">
<title>node31&#45;&gt;node32</title>
<path fill="none" stroke="black" d="M2012.12,-169.64C1999.84,-158.35 1983.65,-143.46 1970.14,-131.04"/>
<polygon fill="black" stroke="black" points="1972.27,-128.24 1962.54,-124.05 1967.53,-133.4 1972.27,-128.24"/>
</g>
<!-- node49 -->
<g id="node31" class="node">
<title>node49</title>
<polygon fill="none" stroke="black" points="657,-288 603,-288 603,-252 657,-252 657,-288"/>
<text text-anchor="middle" x="630" y="-265.8" font-family="Times,serif" font-size="14.00">User</text>
</g>
<!-- node49&#45;&gt;node13 -->
<g id="edge25" class="edge">
<title>node49&#45;&gt;node13</title>
<path fill="none" stroke="black" d="M655.92,-251.83C660.81,-248.99 665.97,-246.24 671,-244 787.11,-192.26 819.9,-184.52 945,-162 971.74,-157.19 1041.66,-163.8 1067,-154 1080.11,-148.93 1092.59,-139.85 1102.68,-131.02"/>
<polygon fill="black" stroke="black" points="1105.23,-133.42 1110.21,-124.06 1100.49,-128.27 1105.23,-133.42"/>
</g>
<!-- node6 -->
<g id="node35" class="node">
<title>node6</title>
<polygon fill="none" stroke="black" points="1153,-52 1099,-52 1099,-16 1153,-16 1153,-52"/>
<text text-anchor="middle" x="1126" y="-29.8" font-family="Times,serif" font-size="14.00">Entity</text>
</g>
<!-- node13&#45;&gt;node6 -->
<g id="edge32" class="edge">
<title>node13&#45;&gt;node6</title>
<path fill="none" stroke="black" d="M1126,-87.7C1126,-79.98 1126,-70.71 1126,-62.11"/>
<polygon fill="black" stroke="black" points="1129.5,-62.1 1126,-52.1 1122.5,-62.1 1129.5,-62.1"/>
</g>
<!-- node33 -->
<g id="node34" class="node">
<title>node33</title>
<polygon fill="none" stroke="black" points="1931.47,-206 1782.53,-206 1782.53,-170 1931.47,-170 1931.47,-206"/>
<text text-anchor="middle" x="1857" y="-183.8" font-family="Times,serif" font-size="14.00">EntityExistedException</text>
</g>
<!-- node33&#45;&gt;node32 -->
<g id="edge31" class="edge">
<title>node33&#45;&gt;node32</title>
<path fill="none" stroke="black" d="M1875.88,-169.64C1888.16,-158.35 1904.35,-143.46 1917.86,-131.04"/>
<polygon fill="black" stroke="black" points="1920.47,-133.4 1925.46,-124.05 1915.73,-128.24 1920.47,-133.4"/>
</g>
<!-- node34 -->
<g id="node40" class="node">
<title>node34</title>
<polygon fill="none" stroke="black" points="2292.95,-206 2137.05,-206 2137.05,-170 2292.95,-170 2292.95,-206"/>
<text text-anchor="middle" x="2215" y="-183.8" font-family="Times,serif" font-size="14.00">GlobalExceptionHandler</text>
</g>
<!-- node34&#45;&gt;node32 -->
<g id="edge50" class="edge">
<title>node34&#45;&gt;node32</title>
<path fill="none" stroke="black" d="M2157.2,-169.94C2114.47,-157.32 2056.19,-140.12 2011.35,-126.88"/>
<polygon fill="black" stroke="black" points="2012.3,-123.51 2001.72,-124.04 2010.31,-130.23 2012.3,-123.51"/>
</g>
<!-- node27 -->
<g id="node41" class="node">
<title>node27</title>
<polygon fill="none" stroke="black" points="786.35,-534 655.65,-534 655.65,-498 786.35,-498 786.35,-534"/>
<text text-anchor="middle" x="721" y="-511.8" font-family="Times,serif" font-size="14.00">PublishBlogRequest</text>
</g>
<!-- node27&#45;&gt;node3 -->
<g id="edge53" class="edge">
<title>node27&#45;&gt;node3</title>
<path fill="none" stroke="black" d="M786.31,-514.98C931.1,-514.43 1269.73,-510.11 1313,-482 1344.01,-461.86 1319.61,-427.53 1351,-408 1373.55,-393.97 1804.39,-409.99 1829,-400 1840.61,-395.29 1851.12,-386.51 1859.48,-377.81"/>
<polygon fill="black" stroke="black" points="1862.16,-380.06 1866.24,-370.28 1856.95,-375.38 1862.16,-380.06"/>
</g>
<!-- node16 -->
<g id="node42" class="node">
<title>node16</title>
<polygon fill="none" stroke="black" points="1758.86,-534 1641.14,-534 1641.14,-498 1758.86,-498 1758.86,-534"/>
<text text-anchor="middle" x="1700" y="-511.8" font-family="Times,serif" font-size="14.00">SaveDraftRequest</text>
</g>
<!-- node16&#45;&gt;node3 -->
<g id="edge54" class="edge">
<title>node16&#45;&gt;node3</title>
<path fill="none" stroke="black" d="M1704.13,-497.93C1711,-473.52 1727.28,-429.25 1759,-408 1785.01,-390.57 1800.59,-413.17 1829,-400 1840.09,-394.86 1850.32,-386.29 1858.6,-377.87"/>
<polygon fill="black" stroke="black" points="1861.4,-379.99 1865.62,-370.27 1856.26,-375.24 1861.4,-379.99"/>
</g>
<!-- node1 -->
<g id="node43" class="node">
<title>node1</title>
<polygon fill="none" stroke="black" points="1712.1,-370 1643.9,-370 1643.9,-334 1712.1,-334 1712.1,-370"/>
<text text-anchor="middle" x="1678" y="-347.8" font-family="Times,serif" font-size="14.00">BasePath</text>
</g>
<!-- node2 -->
<g id="node44" class="node">
<title>node2</title>
<polygon fill="none" stroke="black" points="1625.91,-370 1464.09,-370 1464.09,-334 1625.91,-334 1625.91,-370"/>
<text text-anchor="middle" x="1545" y="-347.8" font-family="Times,serif" font-size="14.00">BaseRequestSpecification</text>
</g>
<!-- node5 -->
<g id="node45" class="node">
<title>node5</title>
<polygon fill="none" stroke="black" points="1445.97,-370 1276.03,-370 1276.03,-334 1445.97,-334 1445.97,-370"/>
<text text-anchor="middle" x="1361" y="-347.8" font-family="Times,serif" font-size="14.00">BaseResponseSpecification</text>
</g>
<!-- node40 -->
<g id="node46" class="node">
<title>node40</title>
<polygon fill="none" stroke="black" points="2092.66,-534 1925.34,-534 1925.34,-498 2092.66,-498 2092.66,-534"/>
<text text-anchor="middle" x="2009" y="-511.8" font-family="Times,serif" font-size="14.00">MyBatisSpringTransaction</text>
</g>
<!-- node45 -->
<g id="node47" class="node">
<title>node45</title>
<polygon fill="none" stroke="black" points="2340.6,-534 2145.4,-534 2145.4,-498 2340.6,-498 2340.6,-534"/>
<text text-anchor="middle" x="2243" y="-511.8" font-family="Times,serif" font-size="14.00">SpringWithMyBatisApplication</text>
</g>
<!-- node10 -->
<g id="node48" class="node">
<title>node10</title>
<polygon fill="none" stroke="black" points="962.27,-124 903.73,-124 903.73,-88 962.27,-88 962.27,-124"/>
<text text-anchor="middle" x="933" y="-101.8" font-family="Times,serif" font-size="14.00">Factory</text>
</g>
<!-- node12 -->
<g id="node49" class="node">
<title>node12</title>
<polygon fill="none" stroke="black" points="885.82,-124 804.18,-124 804.18,-88 885.82,-88 885.82,-124"/>
<text text-anchor="middle" x="845" y="-101.8" font-family="Times,serif" font-size="14.00">ReadModel</text>
</g>
<!-- node19 -->
<g id="node50" class="node">
<title>node19</title>
<polygon fill="none" stroke="black" points="2559.3,-534 2442.7,-534 2442.7,-498 2559.3,-498 2559.3,-534"/>
<text text-anchor="middle" x="2501" y="-511.8" font-family="Times,serif" font-size="14.00">PersistenceObject</text>
</g>
<!-- node29 -->
<g id="node51" class="node">
<title>node29</title>
<polygon fill="none" stroke="black" points="2783,-534 2729,-534 2729,-498 2783,-498 2783,-534"/>
<text text-anchor="middle" x="2756" y="-511.8" font-family="Times,serif" font-size="14.00">Page</text>
</g>
</g>
</svg>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册