2023-07-12 09:31:13來源:轉(zhuǎn)轉(zhuǎn)技術(shù)
在去年,正式上線了對N品類的質(zhì)檢能力。質(zhì)檢中心也有一套標(biāo)準(zhǔn)可以來拓展越來越多N品類,實現(xiàn)用戶閉眼打包寄賣,在系統(tǒng)維度上可以認(rèn)為轉(zhuǎn)轉(zhuǎn)官方驗沒有不能質(zhì)檢的品類。
在傳統(tǒng)的報告中,通常采用固定的模板和結(jié)構(gòu),無法滿足在N品類中的靈活訴求。而輕質(zhì)檢報告的目標(biāo)是提供一種自由組合和解析的方式,可以按照不同的訴求,自由選擇和配置去不同的質(zhì)檢報告呈現(xiàn)出來,同時也需要確保報告的邏輯和數(shù)據(jù)的準(zhǔn)確性,避免信息的混亂或錯誤的解讀,為此轉(zhuǎn)轉(zhuǎn)輕質(zhì)檢報告可能需要建立靈活的數(shù)據(jù)解析和處理引擎。
N品類在官方驗賣場的質(zhì)檢報告如圖所示:
(資料圖)
質(zhì)檢報告
1.2 組件式規(guī)則引擎及其應(yīng)用潛力組件式規(guī)則引擎是一種將規(guī)則拆分為獨立組件并通過組合和配置來實現(xiàn)業(yè)務(wù)邏輯的規(guī)則引擎。它把規(guī)則表示為可重用和可配置的組件,每個組件負(fù)責(zé)處理一個特定的規(guī)則或規(guī)則集合。這些規(guī)則組件可以通過組合、連接和配置來構(gòu)建復(fù)雜的業(yè)務(wù)規(guī)則,以滿足不同的需求和場景。
在公司的系統(tǒng)中充斥著復(fù)雜且豐富多樣的業(yè)務(wù)邏輯,承載的也是公司各種各樣的核心業(yè)務(wù)功能,每個復(fù)雜的業(yè)務(wù)都涉及到RPC的調(diào)用,不同步驟不同的業(yè)務(wù)規(guī)則的處理,數(shù)據(jù)的運算等。隨著時間的推移和版本的地迭代維護的成本會越來越高。代碼的抽象,復(fù)用情況也會越來越差,各個模塊耦合度變高。邏輯的變動,會影響到其他模塊,也會帶來一定的測試成本。
先看個在電商行業(yè)中簡單的例子:
假設(shè)平臺希望根據(jù)不同的用戶類型和購買行為來發(fā)放優(yōu)惠券。以下是一個組件式規(guī)則引擎的簡單編排例子:
規(guī)則組件(A): 用戶類型規(guī)則組件條件:用戶類型為新用戶
動作:發(fā)放新用戶專享優(yōu)惠券
規(guī)則組件(B): 購買金額規(guī)則組件條件:購買金額超過一定閾值
動作:發(fā)放滿減優(yōu)惠券
規(guī)則組件(C): 商品類別規(guī)則組件
條件:購買特定商品類別
動作:發(fā)放該商品類別相關(guān)的優(yōu)惠券
規(guī)則組件(D): 優(yōu)惠券疊加規(guī)則組件
條件:用戶已經(jīng)擁有一張優(yōu)惠券
動作:根據(jù)疊加規(guī)則判斷是否發(fā)放額外的優(yōu)惠券
以上的A,B,C,D四個組件,按照順序執(zhí)行。
規(guī)則編排
在例子中,每個規(guī)則組件都是一個獨立的組件,負(fù)責(zé)處理特定的規(guī)則。它們可以通過組合和配置來構(gòu)建復(fù)雜的優(yōu)惠券發(fā)放規(guī)則。
通過組件式規(guī)則引擎的編排,平臺可以根據(jù)不同的條件和業(yè)務(wù)規(guī)則,靈活地發(fā)放不同類型的優(yōu)惠券。同時,這種模塊化的設(shè)計讓規(guī)則的管理和維護更加方便,可以根據(jù)業(yè)務(wù)需求進行靈活的調(diào)整和擴展,比如實時的去增加一個E組件,或者去掉一個B組件,在或者C可依賴AB,AB并發(fā)執(zhí)行等。
2 組件式規(guī)則引擎概述2.1 LiteFlow的核心概念和特點LiteFlow是一款組件式規(guī)則引擎,它通過將規(guī)則拆分為獨立的組件,以靈活、可組合的方式進行規(guī)則編排和執(zhí)行。以下是該規(guī)則引擎的核心概念和特點:
LiteFlow的核心流程核心流程組件(Component - A B C):每個組件獨立處理特定的規(guī)則邏輯條件(Condition):條件用于判斷是否滿足某個規(guī)則的觸發(fā)條件。動作(Action):動作是規(guī)則觸發(fā)后執(zhí)行的操作。實際業(yè)務(wù)中可以理解為每個處理的Class類標(biāo)記為一個LiteFlow中的一個組件規(guī)則,定義如下,滿足了條件就執(zhí)行相應(yīng)動作。@Slf4j@LiteflowComponent(FlowNodeVar.DYNAMIC_APPOINT)public class DynamicAppointCmp extends NodeComponent { // 條件 isAccess(); // 動作 process();}
編排(Orchestration):編排是指將多個組件按照特定的順序和邏輯組合起來形成規(guī)則流程。例如:THEN (A,B,C,D) // 串行執(zhí)行四個節(jié)點。WHEN (A,B,C,D) // 并行執(zhí)行四個節(jié)點。SWITCH(A).to(B, C, D) // 利用A的結(jié)果去選擇執(zhí)行B,C,D任一節(jié)點。THEN(IF(X, A),B) // 如果X=TRUE執(zhí)行A, 否則執(zhí)行B....
能夠非常靈活的去定義組件的執(zhí)行流程, 如下圖所示A, B, C, D四個規(guī)則節(jié)點,可以通過不同的Chain-1, Chain-2去編排,而Chain的內(nèi)部就是各樣的WHEN THEN 等條件去編排各個節(jié)點而設(shè)立的執(zhí)行規(guī)則。
編排元數(shù)據(jù)信息數(shù)據(jù)上下文(Data Context):LiteFlow使用數(shù)據(jù)上下文來共享和傳遞數(shù)據(jù)(多線程隔離)。上下文
執(zhí)行引擎(Execution Engine):執(zhí)行引擎是LiteFlow的核心組件,負(fù)責(zé)解析規(guī)則流程,按照定義的順序執(zhí)行組件,并處理組件間的數(shù)據(jù)傳遞和上下文管理。執(zhí)行引擎總的來說,LiteFlow組件式規(guī)則引擎的核心概念是組件、編排、條件和動作。它具有靈活的規(guī)則組合和配置能力,支持?jǐn)?shù)據(jù)上下文共享和傳遞,以及可擴展性。這些特點使得LiteFlow成為一個強大而靈活的規(guī)則引擎,適用于各種業(yè)務(wù)場景的規(guī)則編排和執(zhí)行。
2.2 為什么選擇該引擎處理輕質(zhì)檢報告常用的規(guī)則引擎組件,例如:drools、easy-rules、liteFlow等。根據(jù)自己的業(yè)務(wù)場景選擇合適的組件無疑是最好的。在轉(zhuǎn)轉(zhuǎn)寄賣中用戶物品質(zhì)檢完成后賣法的判斷(寄賣,回收...)選擇了easy-rules,因為其業(yè)務(wù)邏輯中存在過多的if else 邏輯判斷,它能夠簡練的把規(guī)則定義好按照規(guī)則執(zhí)行。但在輕質(zhì)檢報告中選用liteflow處理主要考慮幾個方面:
實時的增加組件,移除組件,編配不同場景的規(guī)則執(zhí)行鏈,這將帶來的好處是我可以隨時的調(diào)整報告所呈現(xiàn)的內(nèi)容信息,各種各樣的規(guī)則執(zhí)行鏈也會對應(yīng)各樣的報告頁面或業(yè)務(wù)數(shù)據(jù)的依賴場景。各個組件之間具備并發(fā)處理能力且數(shù)據(jù)上下文線程隔離。規(guī)則定義能夠直接集成第三方比如Apollo,Nacos,Etcd,Zookeeper中,且具備熱刷新機制,規(guī)則變化,無需重啟應(yīng)用,即時去改變報告的規(guī)則。高并發(fā)下不會因為刷新規(guī)則導(dǎo)致正在執(zhí)行的規(guī)則有任何錯亂所帶來報告展示問題??蚣軆?nèi)自帶一個監(jiān)控,能夠知道每個組件的運行耗時排行,可以感知某個規(guī)則出現(xiàn)的問題。3 輕質(zhì)檢報告處理流程設(shè)計3.1 規(guī)則和鏈路處理的簡述首先在初始化階段,會將質(zhì)檢報告生成的規(guī)則存儲插件(Apollo)中,規(guī)則通過解析器加載到規(guī)則引擎,然后通過構(gòu)建器構(gòu)建工程中定義的各個組件(A,B,C等)節(jié)點和規(guī)則執(zhí)行鏈進行加載,執(zhí)行器獲得執(zhí)行鏈路以及執(zhí)行條件和規(guī)則節(jié)點,最終按照業(yè)務(wù)請求的執(zhí)行鏈,進行節(jié)點執(zhí)行和上下文的數(shù)據(jù)交換。如下圖所示:
規(guī)則的定義和執(zhí)行
3.2 在輕質(zhì)檢報告中配置和集成LiteFlow集成數(shù)據(jù)源和服務(wù):LiteFlow通常需要與外部數(shù)據(jù)源和服務(wù)進行集成。涉及連接配置中心、RPC等操作,以獲取所需的數(shù)據(jù)和執(zhí)行規(guī)則所需的規(guī)則。圖片
執(zhí)行器初始化設(shè)計規(guī)則組件:根據(jù)規(guī)則需求,設(shè)計和定義規(guī)則組件。每個規(guī)則組件負(fù)責(zé)處理特定的規(guī)則邏輯,具備條件判斷、動作執(zhí)行、數(shù)據(jù)轉(zhuǎn)換等。規(guī)則組件具備獨立性和可重用性。報告規(guī)則劃分
創(chuàng)建規(guī)則流程:在LiteFlow中創(chuàng)建規(guī)則流程,將規(guī)則組件按照需要的順序進行編排。規(guī)則流程定義了規(guī)則的執(zhí)行順序和流程控制邏輯。質(zhì)檢報告規(guī)則編排
這里只列舉了兩種報告的編排形式,在內(nèi)部系統(tǒng)流程中還有其他場景的一些編排。
配置中心配置規(guī)則組件:對每個規(guī)則組件進行配置,設(shè)置條件、定義動作和指定數(shù)據(jù)上下文。3.3 進一步提高輕質(zhì)檢報告配置能力通過對一個質(zhì)檢組(外觀檢測)的icon和匯總描述文案進行配置化,通過兩種存儲在配置中心的規(guī)則,使得質(zhì)檢項的匯總提示信息進行自定義配置化處理。
報告細(xì)節(jié)處理
4 總結(jié)本文介紹了轉(zhuǎn)轉(zhuǎn)寄賣業(yè)務(wù)下輕質(zhì)檢報告采用LiteFlow編排式規(guī)則引擎的實踐。在N品類質(zhì)檢能力上線以來,多次的質(zhì)檢報告變更做到無需上線配置生效的目標(biāo),一定程度上降低了開發(fā)成本。
關(guān)于作者:
趙路通,轉(zhuǎn)轉(zhuǎn)C2C&寄賣業(yè)務(wù)研發(fā)工程師
關(guān)鍵詞:
1引言1 1簡述輕質(zhì)檢報告的背景在去年,正式上線了對N品類的質(zhì)檢能力。
事件驅(qū)動架構(gòu)是由生產(chǎn)者和消費者組成,生產(chǎn)者負(fù)責(zé)生產(chǎn)事件,消費者監(jiān)聽
cad測量面積快捷鍵為AA,計算面積的具體操作步驟如下:1 先打開CAD軟件
智通財經(jīng)APP獲悉,據(jù)報道,迪士尼(DIS US)正在探索旗下印度公司Star In
1、selina新男友是誰2、Selina懷孕8個月狀態(tài)3、以上就是關(guān)于【selina新
西湖區(qū)開展高溫天氣安全生產(chǎn)檢查杭州網(wǎng)發(fā)布時間:2023-07-1206:55杭州
小米藍牙耳機怎么連接手機小米藍牙耳機只有一邊有聲音怎么辦小米藍牙耳
想必現(xiàn)在有很多小伙伴對于駕照的副本丟了怎么辦方面的知識都比較想要了
電磁力,這個我們?nèi)粘I钪袩o處不在的力量,其提升卻常常被誤解和夸大
賈德松談贏球:我們通過自身的努力回報了球迷,因為他們值得,上海申花,
新湖南客戶端7月11日訊(通訊員陳茜)7月7日,永州市零陵區(qū)接履橋鎮(zhèn)長
“我被批評以胖子為中心而不顧及他人感受,被形容為不健康飲食的宣傳者
【英特爾第二代Gaudi深度學(xué)習(xí)加速器在中國市場上市】英特爾官微消息,7
可能描寫的微血腥,大家斟酌觀看“愛你 愛 愛 你 ”在一個看
今日起,Apple全線產(chǎn)品都可以直接在微信小程序上購買了!記者留意到