-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiagram.drawio.xml
116 lines (116 loc) · 16.6 KB
/
diagram.drawio.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2022-04-07T20:04:15.067Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36" etag="JCOmNlNR8KXLR708V_SR" version="17.4.0" type="google">
<diagram id="nJHBNyDoy3k4vahkzcMj" name="Page-1">
<mxGraphModel dx="971" dy="463" 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="0" />
<mxCell id="1" parent="0" />
<mxCell id="wBS1nP-2k5OH8Zin6J1u-19" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#FFCC99;" parent="1" vertex="1">
<mxGeometry x="240" y="120" width="400" height="400" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-11" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#99CCFF;" parent="1" vertex="1">
<mxGeometry x="280" y="160" width="320" height="320" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-5" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#99FF99;" parent="1" vertex="1">
<mxGeometry x="320" y="200" width="240" height="240" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-3" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#FF9999;" parent="1" vertex="1">
<mxGeometry x="360" y="240" width="160" height="160" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-1" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#FFFF99;" parent="1" vertex="1">
<mxGeometry x="400" y="280" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-4" value="<font style="font-size: 10px">Register</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=45;" parent="1" vertex="1">
<mxGeometry x="361" y="343" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-7" value="<font style="font-size: 10px">API</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="410" y="205" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-8" value="<font style="font-size: 10px">Jobs</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=45;" parent="1" vertex="1">
<mxGeometry x="480" y="239" width="60" height="26" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-10" value="<font style="font-size: 10px">UI Controllers&nbsp;</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-45;" parent="1" vertex="1">
<mxGeometry x="324" y="237" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-12" value="<font style="font-size: 10px">Database</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="410" y="165" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-13" value="<font style="font-size: 10px">Message queues</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-45;" parent="1" vertex="1">
<mxGeometry x="290" y="209" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-14" value="<font style="font-size: 10px">Email service</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=45;" parent="1" vertex="1">
<mxGeometry x="489" y="207" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-15" value="<font style="font-size: 10px">Logging</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=45;" parent="1" vertex="1">
<mxGeometry x="291" y="399" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-17" value="<font style="font-size: 10px">Caching service</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-45;" parent="1" vertex="1">
<mxGeometry x="489" y="399" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-20" value="<font style="font-size: 10px">Config</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="410" y="125" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="260" y="320" as="sourcePoint" />
<mxPoint x="413" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-22" value="<h6>Order of dependencies</h6>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=0" parent="1" vertex="1">
<mxGeometry x="283" y="311" width="97" height="10" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-24" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#FFFFFF;strokeColor=#000000;fillColor=#FFCC99;" parent="1" vertex="1">
<mxGeometry x="680" y="120" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-25" value="<font color="#000000"><b>Config</b>: wires everything together. Initializes the <u>data providers</u> and <u>entrypoints</u>, dependency injects <u>config</u>.</font>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;fontColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="730" y="120" width="350" height="24" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-26" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#FFFFFF;strokeColor=#000000;fillColor=#99CCFF;" parent="1" vertex="1">
<mxGeometry x="680" y="169" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-27" value="<font color="#000000"><b>External services</b>: retrieve/store data and communicate with 3rd party services. Gets injected <u>config</u>. Place where we transform external services data structures to our own <u>domain</u> logic.<br>Eg: MySQL database communication, Email service.<br></font>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;fontColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="730" y="170" width="350" height="53" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-28" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#FFFFFF;strokeColor=#000000;fillColor=#99FF99;" parent="1" vertex="1">
<mxGeometry x="680" y="240" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-29" value="<strong style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Entry points</strong><span style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">: access and output of the application. Initialises&nbsp;</span><u style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">use cases</span></u><span style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">. Gets injected&nbsp;</span><u style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">config</span></u><span style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">&nbsp;and&nbsp;</span><u style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">external services</span></u><span style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">.</span>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;fontColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="730" y="240" width="350" height="26" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-30" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#FFFFFF;strokeColor=#000000;fillColor=#FF9999;" parent="1" vertex="1">
<mxGeometry x="680" y="290" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-31" value="<p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><strong style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Use cases</strong><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">: application business logic. Scenarios driven by&nbsp;</span><u style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">entry points</span></u><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">&nbsp;requests.</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Eg:&nbsp;</span><em style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Register user</em><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">&nbsp;scenario - describes the actions that should be taken when this scenario happens. It's the orchestrator that says:</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">- Go to the database to fetch the data</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">- Perform domain logic like validation if the user exists or if the password has a required minimum length</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">- Send an email to the user</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">- Return response driving the UI redraw</span></p>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;fontColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="730" y="290" width="350" height="125" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-32" value="" style="rounded=1;whiteSpace=wrap;html=1;fontColor=#FFFFFF;strokeColor=#000000;fillColor=#FFFF99;" parent="1" vertex="1">
<mxGeometry x="680" y="430" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="wBS1nP-2k5OH8Zin6J1u-33" value="<p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><strong style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Domain</strong><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">: domain/business logic and types. Does not depend on any other layer</span></p><p style="color: rgb(14 , 16 , 26) ; background: transparent ; margin-top: 0pt ; margin-bottom: 0pt"><span style="background: transparent ; margin-top: 0pt ; margin-bottom: 0pt">Eg: User type and all operations supported by it, like validation of minimum username length.</span></p>" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;fontColor=#FFFFFF;" parent="1" vertex="1">
<mxGeometry x="730" y="430" width="350" height="54" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-1" value="<font style="font-size: 10px">Comment</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="410" y="290" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-3" value="<font style="font-size: 10px">Login</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-45;" vertex="1" parent="1">
<mxGeometry x="359" y="263" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-4" value="<font style="font-size: 10px">Create comment</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=-45;" vertex="1" parent="1">
<mxGeometry x="444" y="346" width="69.27" height="30" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-5" value="<font style="font-size: 10px">Add to cart</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=45;" vertex="1" parent="1">
<mxGeometry x="442" y="263" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-8" value="<font style="font-size: 10px">User</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="410" y="305" width="60" height="15" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-10" value="<font style="font-size: 10px">Shopping cart</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="405" y="320" width="70" height="15" as="geometry" />
</mxCell>
<mxCell id="wG3keu4sTCegCo3Fq0Ut-12" value="<font style="font-size: 10px">Product</font>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
<mxGeometry x="410" y="335" width="60" height="15" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>