<?xml version="1.0" encoding="UTF-8"?>
<!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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="940px" height="371px" viewBox="-0.5 -0.5 940 371" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-07-02T04:53:07.504Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36&quot; version=&quot;14.8.1&quot; etag=&quot;xHEybrNCDWTp3lhWoI6s&quot;&gt;&lt;diagram id=&quot;22f37zuuWZ2RVdC9qHfi&quot;&gt;5VpLl6o4EP41WV4PSXguwcfMoufMnNOLmVnSEpW5aDwYu3V+/VQgyCNRnBa77XvZGIpQhHp89aUE0fH68Eseb1e/8YRliFjJAdEJIoRY1IMfKTmWEs+1SsEyT5NShGvBc/ovU8Jq2j5N2K41UXCeiXTbFs75ZsPmoiWL85y/tacteNZ+6jZeMk3wPI8zXfpnmoiVkgbEqi/8ytLlqno0sdSVdVzNVoLdKk74W0NEp4iOc85FOVofxiyT1qsMU943O3P1tLKcbcQ1NxC1DHGsXo4l8K7qlOdixZd8E2fTWhrlfL9JmFRgwVk954nzLQgxCP9hQhyV4+K94CBaiXWmri74RqiL2IXzncj5dzbmGc+LNVCrOOBKuTq5pNb77fg+nysR1V8ZnwwJIcj4mon8CFNylsUifW2rilUsLE/zTrf+wVPQSKxDFX2WNbIah1NqUEGMaRXFlUoR50smlJbaBzBoLKsWFZ4xe0m942uc7dXq0dRB4RSFMHCR76PIQ1MPhREKZzAR617NMsgO6b23VSrY8zYu7PcGCdr2TbzblimzSA/Sx8oFrywX7HA2yM5YXN3gWx1LUSV4q7OnMt6qkTddgzZ91LLmBdPZnxHgV4St8yhh65C7ha1jCFsXBWPkT2T8+iEKcSNsO35qe6EnbAeIUq8TpY6lR6lviFJ7gCh1zZZyUGQVCT6RyQ4mi0IUUM1SUES2cjg/ZimYLKf99nopjfv0chLE8+/LwuS/7wWoYUq+UzjtDAQF3ejzdCM7JihwR653u5093c4aPGySUHIEac8s3u3Sead4pVnWKFWu7bm+Zypi8pjNzqPBFUbrMUoluxUh3C4+d4G3BC4NEjRNJ57zAeDiG1LGRpGP/KgAl4lMHxP2P8UvwEfbRS9LlxvpcHAIA/dFMsZTIHyhurBOk6QsDQwSIn4p9ElY2so3Kd7NiZAzuZQkio2qmxGp2WIdB97F5PlmjRxKg5aJyW0hUE3hi8WO3eqS4PbsevRcIbQT4XYX/q/OFefjcqXaOP1YyRL0JQu1sPdA6YGxwQuXaLwhfR6Jxtv442g8/pSN6vvR6M6k3cXXYYWumPZpOoNf74l3fduKR3COpr4MekltgdEW0KMGtACjQO0PSrIrMwQuQbl3MyGJag6jpRyRUhnw5AhFdjFwK63tWy9oVTBYbkhmxufQ659TKAPhiQg14hUST7TDq00ZN1yS7ha/VKIKcTO2EJfw1oQJ7RwYAAU0GHBxzc0bSIBtAxR4dETpAGhg3840vi5fdwLNA+/kIG53z3vHHhY2dQM0DlKWwcBS/YFAbws8OispY/Ns+gAr8Vy7bfVBogK7LaXfKqAflsKYGhW6EwEPQYgl0ANghgZqebdtwMnMNnH9tkUcDaPumKRaar07ST3St+XoLf6VBTpvMUxIeMYUvTMzY4dU/NUY/y1VjRx1NjkozcXJsVX8LnZl8cMwvP/v5EqxHYwCOGxCSeBjL+iADfXguY7vE+qQwMa401UbkP4ZOjQ/T5Gmvdv7a/Of9iLJgEXa0MKRfHcmQVzS9pnaq/ZS4S9Xtv2eemJhj7TryY11e1AUJoYOz8cV3Y9JKVv7h+a9KWX3MujhUoqYuj4/RUo1Pmj4kilFNMd9XvvCIPFQRIq1ENkwlCx8VvxLCHpgHJztYzjygUExMYJBWNwaVgS++E+2G2k/SOvC7tbkT2hdGL/lAJeBN100DYqBLZvA4JJI3/3e7ol+WOj3RfcDngF8E3R3ObQS9HSXuzXgCqfAaf2FVYkM9YdqdPof&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 70 40 L 923.63 40" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 928.88 40 L 921.88 43.5 L 923.63 40 L 921.88 36.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="40" cy="40" rx="30.000000000000004" ry="30.000000000000004" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 40px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">客户端 1</div></div></div></foreignObject><text x="40" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">客户端 1</text></switch></g><path d="M 80 200 L 923.63 200" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 928.88 200 L 921.88 203.5 L 923.63 200 L 921.88 196.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="180" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 200px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">服务端</div></div></div></foreignObject><text x="40" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">服务端</text></switch></g><path d="M 15 265 C 15 256.72 26.19 250 40 250 C 46.63 250 52.99 251.58 57.68 254.39 C 62.37 257.21 65 261.02 65 265 L 65 301.67 C 65 309.95 53.81 316.67 40 316.67 C 26.19 316.67 15 309.95 15 301.67 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 65 265 C 65 273.28 53.81 280 40 280 C 26.19 280 15 273.28 15 265" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 296px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">数据库</div></div></div></foreignObject><text x="40" y="300" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">数据库</text></switch></g><path d="M 90 40 L 128.46 193.82" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 129.73 198.92 L 124.64 192.97 L 128.46 193.82 L 131.43 191.28 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 78px; margin-left: 102px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单</div></div></div></foreignObject><text x="102" y="81" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单</text></switch></g><path d="M 160 120 L 178.46 193.82" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 179.73 198.92 L 174.64 192.97 L 178.46 193.82 L 181.43 191.28 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 148px; margin-left: 168px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单</div></div></div></foreignObject><text x="168" y="152" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单</text></switch></g><ellipse cx="40" cy="120" rx="30.000000000000004" ry="30.000000000000004" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 120px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">客户端 2</div></div></div></foreignObject><text x="40" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">客户端 2</text></switch></g><path d="M 65 290 L 923.63 290" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 928.88 290 L 921.88 293.5 L 923.63 290 L 921.88 286.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="296.67" width="140" height="73.33" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 333px; margin-left: 212px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1. 记录当前库存<br />2. 更新库存前库存不变<br />3. 更新库存为 0</div></div></div></foreignObject><text x="212" y="337" fill="#000000" font-family="Helvetica" font-size="12px">1. 记录当前库存...</text></switch></g><path d="M 520 290 L 598.06 46.07" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 599.66 41.06 L 600.86 48.8 L 598.06 46.07 L 594.19 46.67 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 84px; margin-left: 591px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单成功</div></div></div></foreignObject><text x="591" y="87" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单成功</text></switch></g><path d="M 600 290 L 648.2 126.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 649.68 121.07 L 651.07 128.78 L 648.2 126.11 L 644.35 126.8 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 170px; margin-left: 640px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">下单失败</div></div></div></foreignObject><text x="640" y="173" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">下单失败</text></switch></g><path d="M 70 120 L 923.63 120" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 928.88 120 L 921.88 123.5 L 923.63 120 L 921.88 116.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 200 L 298.62 283.78" fill="none" stroke="#3333ff" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 299.76 288.91 L 294.82 282.83 L 298.62 283.78 L 301.66 281.32 Z" fill="#3333ff" stroke="#3333ff" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 247px; margin-left: 290px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">查询更新库存</div></div></div></foreignObject><text x="290" y="250" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">查询更新库存</text></switch></g><path d="M 400 200 L 418.62 283.78" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 419.76 288.91 L 414.82 282.83 L 418.62 283.78 L 421.66 281.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 247px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">查询更新库存</div></div></div></foreignObject><text x="410" y="250" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">查询更新库存</text></switch></g><rect x="380" y="296.67" width="140" height="73.33" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 333px; margin-left: 382px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1. 记录当前库存<br />2. 更新库存库存已被修改<br />3. 回滚事务</div></div></div></foreignObject><text x="382" y="337" fill="#000000" font-family="Helvetica" font-size="12px">1. 记录当前库存...</text></switch></g><rect x="850" y="0" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 10px; margin-left: 851px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">时间线</div></div></div></foreignObject><text x="880" y="15" fill="#000000" font-family="Helvetica" font-size="16px" text-anchor="middle">时间线</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>