Skip to content

Instantly share code, notes, and snippets.

@chrisglass
Created August 20, 2018 08:47
Show Gist options
  • Save chrisglass/b7363a0992b0f2bdc31e2b33b72235ee to your computer and use it in GitHub Desktop.
Save chrisglass/b7363a0992b0f2bdc31e2b33b72235ee to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" width="991px" height="1402px" version="1.1" content="&lt;mxfile userAgent=&quot;Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0&quot; version=&quot;9.0.6&quot; editor=&quot;www.draw.io&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;b6e2e94e-73e0-5c60-7c0d-aba4d8047099&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g transform="translate(0.5,0.5)"><rect x="700" y="76" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(736.5,99.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="47" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 48px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service</div></div></div></foreignObject><text x="24" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service&lt;/div&gt;</text></switch></g><rect x="445" y="56" width="170" height="80" rx="12" ry="12" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(461.5,89.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="137" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 138px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">SecurityGroupService</div></div></foreignObject><text x="69" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">SecurityGroupService</text></switch></g><rect x="210" y="76" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(246.5,99.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="47" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 48px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service</div></div></div></foreignObject><text x="24" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service&lt;/div&gt;</text></switch></g><rect x="440" y="226" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(445.5,239.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="540" y="246" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(545.5,259.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="700" y="226" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(705.5,239.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="780" y="246" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(785.5,259.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="210" y="216" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(215.5,229.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="290" y="236" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(295.5,249.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 410 356 L 410 46" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 670 356 L 670 46" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 150 201 L 910 201" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><g transform="translate(0.5,235.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="108" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 108px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Data access layer</div><div><br /></div></div></div></foreignObject><text x="54" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Data access layer&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</text></switch></g><g transform="translate(5.5,104.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="168" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 169px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service/Management layer</div></div></div></foreignObject><text x="84" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service/Management layer&lt;/div&gt;</text></switch></g><path d="M 930 341 L 150 341" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 530 367 C 530 345.67 590 345.67 590 367 L 590 415 C 590 436.33 530 436.33 530 415 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 530 367 C 530 383 590 383 590 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(531.5,388.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 425 367 C 425 345.67 485 345.67 485 367 L 485 415 C 485 436.33 425 436.33 425 415 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 425 367 C 425 383 485 383 485 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(426.5,388.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 690 367 C 690 345.67 750 345.67 750 367 L 750 415 C 750 436.33 690 436.33 690 415 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 690 367 C 690 383 750 383 750 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(691.5,388.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 770 367 C 770 345.67 830 345.67 830 367 L 830 415 C 830 436.33 770 436.33 770 415 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 770 367 C 770 383 830 383 830 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(771.5,388.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 280 377 C 280 355.67 340 355.67 340 377 L 340 425 C 340 446.33 280 446.33 280 425 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 280 377 C 280 393 340 393 340 377" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(281.5,398.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 200 377 C 200 355.67 260 355.67 260 377 L 260 425 C 260 446.33 200 446.33 200 425 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 200 377 C 200 393 260 393 260 377" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(201.5,398.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 310 354.63 L 310 276" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 310 359.88 L 306.5 352.88 L 310 354.63 L 313.5 352.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 230 354.63 L 230 256" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 230 359.88 L 226.5 352.88 L 230 354.63 L 233.5 352.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 456.85 344.64 L 460 266" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 456.64 349.88 L 453.43 342.75 L 456.85 344.64 L 460.42 343.03 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 560 344.63 L 560 286" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 560 349.88 L 556.5 342.88 L 560 344.63 L 563.5 342.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 720 344.63 L 720 271" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 720 349.88 L 716.5 342.88 L 720 344.63 L 723.5 342.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 800 344.63 L 800 286" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 800 349.88 L 796.5 342.88 L 800 344.63 L 803.5 342.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(64.5,-0.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="255" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 256px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">BEFORE REFACTORING</div></div></foreignObject><text x="128" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">BEFORE REFACTORING</text></switch></g><g transform="translate(51.5,689.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="236" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 237px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>AFTER REFACTORING</div></div></div></foreignObject><text x="118" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">&lt;div&gt;AFTER REFACTORING&lt;/div&gt;</text></switch></g><path d="M 435.41 222.36 L 330 121" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 439.19 225.99 L 431.72 223.67 L 435.41 222.36 L 436.57 218.62 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 309.37 229.66 L 300 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 309.89 234.89 L 305.71 228.27 L 309.37 229.66 L 312.67 227.57 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 256.18 247.54 L 283.82 254.46" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 251.08 246.27 L 258.72 244.57 L 256.18 247.54 L 257.03 251.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 288.92 255.73 L 281.28 257.43 L 283.82 254.46 L 282.97 250.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 232.63 209.66 L 240 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 232.11 214.89 L 229.33 207.57 L 232.63 209.66 L 236.29 208.27 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 325.4 232.62 L 478 137" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 320.95 235.41 L 325.02 228.72 L 325.4 232.62 L 328.74 234.66 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 433.66 246.58 L 336.34 255.42" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 438.89 246.1 L 432.23 250.22 L 433.66 246.58 L 431.6 243.25 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 331.11 255.9 L 337.77 251.78 L 336.34 255.42 L 338.4 258.75 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 475.65 223.05 L 700 106" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 470.99 225.48 L 475.58 219.14 L 475.65 223.05 L 478.82 225.35 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 564.87 241.9 L 700 128" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 560.85 245.28 L 563.95 238.09 L 564.87 241.9 L 568.46 243.44 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 463.11 215.44 L 507.6 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 460.55 220.02 L 460.91 212.21 L 463.11 215.44 L 467.02 215.63 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 551.3 239.77 L 573 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 550.23 244.91 L 548.24 237.34 L 551.3 239.77 L 555.09 238.77 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 720.7 219.67 L 730 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 720.12 224.89 L 717.42 217.55 L 720.7 219.67 L 724.38 218.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 799.42 239.66 L 790 136" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 799.9 244.89 L 795.78 238.23 L 799.42 239.66 L 802.75 237.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 543 286 L 460.12 347.22" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 455.9 350.34 L 459.45 343.36 L 460.12 347.22 L 463.61 348.99 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="740" y="761" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(776.5,784.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="47" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 48px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service</div></div></div></foreignObject><text x="24" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service&lt;/div&gt;</text></switch></g><rect x="485" y="741" width="170" height="80" rx="12" ry="12" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(501.5,774.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="137" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 138px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">SecurityGroupService</div></div></foreignObject><text x="69" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">SecurityGroupService</text></switch></g><rect x="250" y="761" width="120" height="60" rx="9" ry="9" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(286.5,784.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="47" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 48px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service</div></div></div></foreignObject><text x="24" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service&lt;/div&gt;</text></switch></g><rect x="480" y="911" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(485.5,924.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="580" y="931" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(585.5,944.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="740" y="911" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(745.5,924.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="820" y="931" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(825.5,944.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="250" y="901" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(255.5,914.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="330" y="921" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(335.5,934.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="28" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 29px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DAO</div></div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 450 1041 L 450 731" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 710 1041 L 710 731" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 190 886 L 950 886" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><g transform="translate(40.5,920.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="108" height="41" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 108px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Data access layer</div><div><br /></div></div></div></foreignObject><text x="54" y="27" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Data access layer&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</text></switch></g><g transform="translate(45.5,789.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="168" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 169px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>Service/Management layer</div></div></div></foreignObject><text x="84" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;Service/Management layer&lt;/div&gt;</text></switch></g><path d="M 970 1026 L 190 1026" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 570 1052 C 570 1030.67 630 1030.67 630 1052 L 630 1100 C 630 1121.33 570 1121.33 570 1100 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 570 1052 C 570 1068 630 1068 630 1052" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(571.5,1073.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 465 1052 C 465 1030.67 525 1030.67 525 1052 L 525 1100 C 525 1121.33 465 1121.33 465 1100 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 465 1052 C 465 1068 525 1068 525 1052" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(466.5,1073.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 730 1052 C 730 1030.67 790 1030.67 790 1052 L 790 1100 C 790 1121.33 730 1121.33 730 1100 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 730 1052 C 730 1068 790 1068 790 1052" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(731.5,1073.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 810 1052 C 810 1030.67 870 1030.67 870 1052 L 870 1100 C 870 1121.33 810 1121.33 810 1100 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 810 1052 C 810 1068 870 1068 870 1052" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(811.5,1073.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 320 1062 C 320 1040.67 380 1040.67 380 1062 L 380 1110 C 380 1131.33 320 1131.33 320 1110 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 320 1062 C 320 1078 380 1078 380 1062" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(321.5,1083.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 240 1062 C 240 1040.67 300 1040.67 300 1062 L 300 1110 C 300 1131.33 240 1131.33 240 1110 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 240 1062 C 240 1078 300 1078 300 1062" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(241.5,1083.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="56" height="27" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 56px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>DB Table</div></div></div></foreignObject><text x="28" y="20" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">&lt;div&gt;DB Table&lt;/div&gt;</text></switch></g><path d="M 350 1039.63 L 350 961" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 350 1044.88 L 346.5 1037.88 L 350 1039.63 L 353.5 1037.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 270 1039.63 L 270 941" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 270 1044.88 L 266.5 1037.88 L 270 1039.63 L 273.5 1037.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 496.85 1029.64 L 500 951" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 496.64 1034.88 L 493.43 1027.75 L 496.85 1029.64 L 500.42 1028.03 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 600 1029.63 L 600 971" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 600 1034.88 L 596.5 1027.88 L 600 1029.63 L 603.5 1027.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 760 1029.63 L 760 956" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 760 1034.88 L 756.5 1027.88 L 760 1029.63 L 763.5 1027.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 840 1029.63 L 840 971" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 840 1034.88 L 836.5 1027.88 L 840 1029.63 L 843.5 1027.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 349.37 914.66 L 340 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 349.89 919.89 L 345.71 913.27 L 349.37 914.66 L 352.67 912.57 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 296.18 932.54 L 323.82 939.46" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 291.08 931.27 L 298.72 929.57 L 296.18 932.54 L 297.03 936.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 328.92 940.73 L 321.28 942.43 L 323.82 939.46 L 322.97 935.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 272.63 894.66 L 280 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 272.11 899.89 L 269.33 892.57 L 272.63 894.66 L 276.29 893.27 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 365.4 917.62 L 518 822" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 360.95 920.41 L 365.02 913.72 L 365.4 917.62 L 368.74 919.66 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 503.11 900.44 L 547.6 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 500.55 905.02 L 500.91 897.21 L 503.11 900.44 L 507.02 900.63 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 591.3 924.77 L 613 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 590.23 929.91 L 588.24 922.34 L 591.3 924.77 L 595.09 923.77 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 760.7 904.67 L 770 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 760.12 909.89 L 757.42 902.55 L 760.7 904.67 L 764.38 903.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 839.42 924.66 L 830 821" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 839.9 929.89 L 835.78 923.23 L 839.42 924.66 L 842.75 922.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 583 971 L 500.12 1032.22" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 495.9 1035.34 L 499.45 1028.36 L 500.12 1032.22 L 503.61 1033.99 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 478.66 781.55 L 376.34 790.45" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 483.89 781.1 L 477.22 785.19 L 478.66 781.55 L 476.61 778.22 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 371.11 790.9 L 377.78 786.81 L 376.34 790.45 L 378.39 793.78 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 733.68 790.26 L 661.32 781.74" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 738.89 790.87 L 731.53 793.53 L 733.68 790.26 L 732.35 786.58 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 656.11 781.13 L 663.47 778.47 L 661.32 781.74 L 662.65 785.42 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 693.72 247.05 L 586.28 264.95" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 698.9 246.18 L 692.57 250.79 L 693.72 247.05 L 691.42 243.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 581.1 265.82 L 587.43 261.21 L 586.28 264.95 L 588.58 268.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(0.5,1180.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="988" height="190" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 988px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div>The SecurityGroup service/Manager is the only component allowed to talk to the SecurityGroup DAOs. Other services call the SecurityGroup service.</div><div><br /></div><div>The SecurityGroup service still calls other Service's DAOs after converting from UUIDs to IDs (when necessary). Those calls can be changed when/if the target service gets similarly refactored.</div><div><br /></div><div>It is possible to reimplement the SecurityGroup service to talk to another backend.<br /></div></div></div></foreignObject><text x="494" y="105" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><g transform="translate(70.5,520.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="788" height="70" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 788px; white-space: normal; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">All Services/Managers talk to all DAOs directly. We cannot refactor at the DAO level since the DAOs map to database-specific notions (e.g. one DAO for a join table) </div></div></foreignObject><text x="394" y="45" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">All Services/Managers talk to all DAOs directly. We cannot refactor at the DAO level since the DAOs map to database-specific notions (e.g. one DAO for a join table) </text></switch></g></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment