達達**裡有多種型別的商品,每種商品有不同的展示,定價,發貨,庫存管理,退款邏輯。在專案開發半年後,**邏輯繁雜混亂,難以維護。在2023年的十一,我們實施了一次重構,思路為:
每乙個商品會繫結多個外掛程式,每個商品可動態的新增刪除外掛程式:
使用者購買任何型別商品,都會經歷如下圖的各個節點。當某個節點被觸發時,系統會檢測購買的商品有哪些外掛程式,並按順序執行繫結外掛程式在該節點的**邏輯。
外掛程式的引數是可以實時配置的,可以針對商品的需求,調整外掛程式引數。
外掛程式的流程所執行的邏輯可以直接在後台看到,方便理清該商品的購買流程細節,無需再寫文件。
接到新需求,你要做的只是編寫乙個外掛程式檔案。系統通過反射的方式,自動獲取到路徑裡的新的外掛程式,展示在後台介面上。後台配置後,外掛程式即可生效。
屬性說明
plugin_id
外掛程式id
plugin_name
外掛程式展示名稱
category
外掛程式分類
priority
外掛程式的執行順序
desc
外掛程式在不同節點的邏輯描述
繼承props class,定義了該引數的屬性,預設值等。props是可以在後台配置的,實時生效。
節點的業務**都寫在節點方法中。當乙個節點被觸發,繫結的外掛程式上的節點方法就會按priority的順序依次執行。節點方法會輸入該外掛程式的配置引數props,api傳入的引數form,和貫穿不同外掛程式的引數data。每個外掛程式執行結束後也會返回標準的output class,來處理一些異常情況。
當前達達**已經使用了一年,執行良好,每次有新業務就用外掛程式的形式增量新增,幾乎沒有再次重構的需要。
眾包任務業務的結算系統也已使用外掛程式系統來處理不同專案複雜的結算邏輯。接入整套外掛程式系統及後台配置功能只花了半天的工作量。
針對外掛程式的自動化測試比單元測試更加貼近業務,比整合測試更加細粒度。外掛程式系統對邏輯的細粒度分離和對input,output引數的把控,讓自動化測試變得簡單。後台介面可自動獲取乙個外掛程式或乙個業務所需要的所有input和所有預期的output引數,測試可以生成測例並定義input和預期的output。
業務的外掛程式拆分產品也可以參與進來,介面的可讀性讓產品更能了解乙個業務具體執行了哪些邏輯。在需求討論時,產品和研發可以討論出乙個外掛程式邏輯,在後台自動生成模板給研發,同時測試也可以開始根據此模版編寫測例。
硬體重構 軟體定義 浪潮SDS讓業務輕鬆駕馭資料
軟體定義儲存 sds 是近兩年it領域中的乙個熱門概念,它通常採用通用的架構和標準的硬體平台,為企業提供一套高可靠 高效能 易擴充套件 靈活彈性 可快速部署且成本低廉的儲存系統。目前在市場上的實現sds的方法較多,比較主流的大致可分為三種 基於單純軟體的分布式塊儲存sds,執行於標準伺服器 萬兆網路...
靜態網頁輕鬆載入動態資料,讓HTML開發更輕鬆
很多人可能用過vie.js,網頁動態載入資料。一般來說,html在後面呼叫new vue 載入資料的。vue很有創意,在html中插入 標記,使用html模板化,方便開發。但其也有一定不便。我受vue啟發,想與jquery結合 我很喜歡jquery 我嘗試使用 ajax 載入資料,並把資料顯示到網頁...
如何讓程式設計師專注於業務邏輯開發
今天開會,老闆突然說了一句想讓程式設計師專注於業務邏輯開發,前幾天就聽說了有這個打算,也是比較納悶,今天才大概了解了怎麼回事。當然此方式只能應用於物聯網,或者對資料不甚敏感的網際網路,大概做法就是把web端顯示的資料就是一些列的狀態資料全部從嵌入式或者資料庫 到web端,也不要和前段去聯調字段或者對...