1. 架構(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ǎng)分享、產(chǎn)品思考等等,同時(shí)也非常歡迎大家加我微信「java_front」一起交流學(xué)習(xí)




        1 文章概述

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

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

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

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

        2.1 業(yè)務(wù)場(chǎng)景

        商家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)營(yíng)策略,設(shè)置本店鋪營(yíng)銷活動(dòng)和不同活動(dòng)規(guī)則,本例中各個(gè)店鋪可以設(shè)置各種活動(dòng)規(guī)則,但是共享同一份資源(100張優(yōu)惠券)常見(jiàn)活動(dòng)規(guī)則:

        • 活動(dòng)開(kāi)始時(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ù)場(chǎng)景

        商品A每個(gè)5元,用戶購(gòu)買3個(gè)并下單成功,但是還沒(méi)有付款。此時(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
        • 營(yíng)銷活動(dòng)抵扣金額
        • 運(yùn)費(fèi)金額

        3.3.3 物流信息

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

        3.3.4 商品明細(xì)

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

        3.4 漫長(zhǎng)的流程

        契約模型要記錄如此多的快照信息,意味著契約系統(tǒng)需要與很多系統(tǒng)交互,例如在使用優(yōu)惠券時(shí),訂單系統(tǒng)要詢問(wèn)優(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)益
        • 鎖定庫(kù)存(調(diào)度中心)
        • 計(jì)算運(yùn)費(fèi)(物流系統(tǒng))
        • 生成不可見(jiàn)訂單
        • 扣減庫(kù)存
        • 扣減優(yōu)惠券
        • 扣減用戶權(quán)益
        • 占用活動(dòng)資格
        • 訂單可見(jiàn)(待支付)
        • 支付訂單(已支付)
        • 訂單下推
        • 物流發(fā)貨
        • 用戶簽收(已完成)
        • 用戶評(píng)價(jià)

        4 模板模型

        4.1 業(yè)務(wù)場(chǎng)景

        商家可以設(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)模板綁定,購(gòu)買商品時(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ì)比模板模型與契約模型:契約模型是一旦簽訂,無(wú)論契約中原始數(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)師需要思考能否抽取共通之處,本文介紹了三種常見(jiàn)的業(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ǎng)分享、產(chǎn)品思考等等,同時(shí)也非常歡迎大家加我微信「java_front」一起交流學(xué)習(xí)


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 日韩屄 | 色撸一撸 | 久久性愛視頻 | 少妇寂寞偷公乱400章 | 都市激情亚洲无码 |