<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          架構(gòu)設(shè)計(jì)之三種業(yè)務(wù)模型:活動(dòng)資源模型、契約模型、模板模型

          共 6343字,需瀏覽 13分鐘

           ·

          2023-06-17 18:21


          JAVA前線?


          歡迎大家關(guān)注公眾號(hào)「JAVA前線」查看更多精彩分享,主要內(nèi)容包括源碼分析、實(shí)際應(yīng)用、架構(gòu)思維、職場分享、產(chǎn)品思考等等,同時(shí)也非常歡迎大家加我微信「java_front」一起交流學(xué)習(xí)




          1 文章概述

          在實(shí)際開發(fā)場景中業(yè)務(wù)需求各式各樣,在技術(shù)方案設(shè)計(jì)階段,架構(gòu)師的工作就是將業(yè)務(wù)語言翻譯為技術(shù)語言。

          業(yè)務(wù)場景多種多樣,但是架構(gòu)師需要發(fā)現(xiàn)不同業(yè)務(wù)相通之處,抽象成通用模型,這樣后續(xù)再遇到需求,即使業(yè)務(wù)場景大相徑庭,也可以使用同一套模型應(yīng)對(duì)。本文分析三種業(yè)務(wù)模型:

          • 活動(dòng)資源模型
          • 契約模型
          • 模板模型

          2 活動(dòng)資源模型

          2.1 業(yè)務(wù)場景

          商家A總共準(zhǔn)備發(fā)放一種滿100減10元優(yōu)惠券100張,商家A有5家店鋪,每個(gè)店鋪優(yōu)惠券發(fā)放規(guī)則各不相同:

          • 店鋪1:每人限領(lǐng)1張
          • 店鋪2:每人限領(lǐng)2張
          • 店鋪3:只允許A城市用戶領(lǐng)券
          • 店鋪4:只允許新用戶領(lǐng)券
          • 店鋪5:只允許B城市C區(qū)老用戶領(lǐng)券

          2.2 模型分析

          2.2.1 資源

          各個(gè)店鋪發(fā)放優(yōu)惠券規(guī)則不同,但是優(yōu)惠券只有一種,所以不可能將規(guī)則沉淀在優(yōu)惠券,這就引出本文第一種模型:活動(dòng)資源模型。優(yōu)惠券作為一種資源只承載最本質(zhì)屬性:

          • 發(fā)放張數(shù)
          • 優(yōu)惠類型(滿減/滿折)
          • 優(yōu)惠金額
          • 折扣比例
          • 使用門檻金額
          • 有效期

          發(fā)放張數(shù)控制資源總成本,需要仔細(xì)評(píng)估。


          2.2.2 活動(dòng)

          那么店鋪不同的發(fā)放規(guī)則在哪里體現(xiàn)?答案是活動(dòng)領(lǐng)域。每個(gè)店鋪可以根據(jù)經(jīng)營策略,設(shè)置本店鋪營銷活動(dòng)和不同活動(dòng)規(guī)則,本例中各個(gè)店鋪可以設(shè)置各種活動(dòng)規(guī)則,但是共享同一份資源(100張優(yōu)惠券)常見活動(dòng)規(guī)則:

          • 活動(dòng)開始時(shí)間
          • 活動(dòng)截止時(shí)間
          • 資源領(lǐng)取類型(系統(tǒng)發(fā)放/手動(dòng)領(lǐng)?。?/li>
          • 每人允許參與活動(dòng)次數(shù)
          • 允許參與用戶規(guī)則
          • 允許參與城市規(guī)則
          • 允許參與商品規(guī)則
          • 活動(dòng)資源規(guī)則:每人允許領(lǐng)取X張資源

          2.3 數(shù)據(jù)模型

          2.3.1 資源相關(guān)

          • 優(yōu)惠券表

            • 資源本質(zhì)屬性
          • 優(yōu)惠券領(lǐng)取流水表

            • 資源領(lǐng)取記錄
          • 優(yōu)惠券使用流水表

            • 資源使用記錄
          • 優(yōu)惠券使用明細(xì)表

            • 訂單優(yōu)惠明細(xì)

          2.3.2 活動(dòng)相關(guān)

          • 活動(dòng)表

            • 活動(dòng)本質(zhì)屬性
          • 活動(dòng)資源規(guī)則表

            • 每人允許領(lǐng)取X張資源
          • 活動(dòng)地區(qū)規(guī)則表

            • 允許參與活動(dòng)地區(qū)信息
          • 活動(dòng)用戶規(guī)則表

            • 允許參與活動(dòng)用戶信息
          • 活動(dòng)商品規(guī)則表

            • 允許參與活動(dòng)商品信息

          3 契約模型

          3.1 業(yè)務(wù)場景

          商品A每個(gè)5元,用戶購買3個(gè)并下單成功,但是還沒有付款。此時(shí)賣家對(duì)商品價(jià)格做出調(diào)整改為每個(gè)100元,那么用戶再付款時(shí),應(yīng)該付15元還是300元?


          3.2 模型分析

          訂單本質(zhì)上是一種契約,一旦簽訂(下單)核心信息就不允許更改。當(dāng)時(shí)用戶簽訂契約是每個(gè)5元,即使后續(xù)調(diào)整為每個(gè)100元,也不應(yīng)該影響已簽訂契約。

          既然契約具有不可變性,那么契約對(duì)象就要保存簽訂時(shí)刻各類快照信息,訂單就是一種非常典型的契約對(duì)象。


          3.3 數(shù)據(jù)模型

          本章節(jié)以訂單模型為例介紹契約模型,這種模型特點(diǎn)是集各類快照大成,所有涉及信息都需要保留快照便于追溯。


          3.3.1 基本信息

          • 訂單編號(hào)
          • 業(yè)務(wù)類型
          • 下單渠道
          • 下單時(shí)間
          • 訂單狀態(tài)
          • 商家Id
          • 店鋪Id
          • 下單用戶Id

          3.3.2 支付與促銷信息

          • 支付方式(支付寶/微信/銀行卡)
          • 支付單號(hào)
          • 支付賬戶
          • 應(yīng)付金額
          • 實(shí)付金額
          • 使用優(yōu)惠券Id
          • 優(yōu)惠券抵扣金額
          • 用戶權(quán)益抵扣金額
          • 參與促銷活動(dòng)Id
          • 營銷活動(dòng)抵扣金額
          • 運(yùn)費(fèi)金額

          3.3.3 物流信息

          • 配送方式(物流/同城/自提)
          • 配送公司
          • 收貨省、市、區(qū)
          • 收貨詳細(xì)地址
          • 收貨人電話
          • 快遞單號(hào)
          • 自提省市區(qū)
          • 自提詳細(xì)地址
          • 自提商家電話

          3.3.4 商品明細(xì)

          • 子訂單Id
          • 子訂單狀態(tài)
          • skuId
          • skuTitle
          • 購買數(shù)量
          • 銷售單價(jià)
          • 實(shí)付單價(jià)
          • 實(shí)付總金額
          • 分?jǐn)們?yōu)惠券金額
          • 分?jǐn)傆脩魴?quán)益金額
          • 分?jǐn)偞黉N活動(dòng)金額

          3.4 漫長的流程

          契約模型要記錄如此多的快照信息,意味著契約系統(tǒng)需要與很多系統(tǒng)交互,例如在使用優(yōu)惠券時(shí),訂單系統(tǒng)要詢問優(yōu)惠券系統(tǒng)能不能用優(yōu)惠券。在用戶支付時(shí)需要與支付系統(tǒng)交互,并等待支付系統(tǒng)回調(diào)。在用戶支付完成15分鐘后將訂單下推至調(diào)度中心,進(jìn)行發(fā)貨調(diào)度。這也就意味著契約系統(tǒng)復(fù)雜度要比一般系統(tǒng)高。銷售層訂單一般流程:

          • 用戶下單
          • 風(fēng)控校驗(yàn)
          • 獲取商品信息
          • 獲取優(yōu)惠券
          • 獲取促銷活動(dòng)
          • 獲取用戶權(quán)益
          • 鎖定庫存(調(diào)度中心)
          • 計(jì)算運(yùn)費(fèi)(物流系統(tǒng))
          • 生成不可見訂單
          • 扣減庫存
          • 扣減優(yōu)惠券
          • 扣減用戶權(quán)益
          • 占用活動(dòng)資格
          • 訂單可見(待支付)
          • 支付訂單(已支付)
          • 訂單下推
          • 物流發(fā)貨
          • 用戶簽收(已完成)
          • 用戶評(píng)價(jià)

          4 模板模型

          4.1 業(yè)務(wù)場景

          商家可以設(shè)置不同城市的運(yùn)費(fèi)模板:

          • A城市:按件數(shù)計(jì)費(fèi)

            • 首重:2件
            • 首費(fèi):1元
            • 續(xù)重:1件
            • 續(xù)費(fèi):1元
          • B城市:按重量計(jì)費(fèi)

            • 首重:3公斤
            • 首費(fèi):1元
            • 續(xù)重:2公斤
            • 續(xù)費(fèi):1元

          商家可以將商品與運(yùn)費(fèi)模板綁定,購買商品時(shí)讀取運(yùn)費(fèi)模板計(jì)算運(yùn)費(fèi)。


          4.2 模型分析

          模板作用是定義規(guī)則,模板模型的作用是將業(yè)務(wù)對(duì)象與規(guī)則解耦,規(guī)則定義在模板,再與業(yè)務(wù)對(duì)象綁定。這樣做有兩個(gè)優(yōu)點(diǎn):第一是規(guī)則與業(yè)務(wù)對(duì)象解耦,第二是模板可以復(fù)用,相同規(guī)則不用重復(fù)設(shè)置。

          我們可以對(duì)比模板模型與契約模型:契約模型是一旦簽訂,無論契約中原始數(shù)據(jù)如何變化,都不會(huì)改變契約。但是模板模型,業(yè)務(wù)對(duì)象在形成契約之前,需要實(shí)時(shí)感知模板內(nèi)容變化,例如在下單前,商品綁定的運(yùn)費(fèi)模板續(xù)費(fèi)調(diào)整,需要重新計(jì)算價(jià)格。


          4.3 數(shù)據(jù)模型

          • 模板表

            • 定義規(guī)則
          • 業(yè)務(wù)對(duì)象與模板關(guān)系表

            • 建立業(yè)務(wù)對(duì)象與模板關(guān)系

          5 文章總結(jié)

          在設(shè)計(jì)技術(shù)方案時(shí)雖然需求表面各式各樣,作為架構(gòu)師需要思考能否抽取共通之處,本文介紹了三種常見的業(yè)務(wù)模型:活動(dòng)資源模型、契約模型、模板模型。

          活動(dòng)資源模型中資源只設(shè)置資源本質(zhì)屬性,活動(dòng)靈活控制規(guī)則。契約模型中一旦契約簽訂不允許再改變,這也意味著契約需要記錄大而全的信息。模板模型中模板定義規(guī)則,業(yè)務(wù)對(duì)象綁定模板,并且需要實(shí)時(shí)感知模板變化。



          JAVA前線?


          歡迎大家關(guān)注公眾號(hào)「JAVA前線」查看更多精彩分享,主要內(nèi)容包括源碼分析、實(shí)際應(yīng)用、架構(gòu)思維、職場分享、產(chǎn)品思考等等,同時(shí)也非常歡迎大家加我微信「java_front」一起交流學(xué)習(xí)


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日本中文在线 | 青草视频亚洲 | 免费黄色一级大片 | 无码抠逼视频 | 青青草欧美 |