自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編排式規(guī)則引擎LiteFlow在轉(zhuǎn)轉(zhuǎn)輕質(zhì)檢報(bào)告的實(shí)踐

開(kāi)發(fā) 前端
本文介紹了轉(zhuǎn)轉(zhuǎn)寄賣業(yè)務(wù)下輕質(zhì)檢報(bào)告采用LiteFlow編排式規(guī)則引擎的實(shí)踐。在N品類質(zhì)檢能力上線以來(lái),多次的質(zhì)檢報(bào)告變更做到無(wú)需上線配置生效的目標(biāo),一定程度上降低了開(kāi)發(fā)成本。

1 引言

1.1 簡(jiǎn)述輕質(zhì)檢報(bào)告的背景

在去年,正式上線了對(duì)N品類的質(zhì)檢能力。質(zhì)檢中心也有一套標(biāo)準(zhǔn)可以來(lái)拓展越來(lái)越多N品類,實(shí)現(xiàn)用戶閉眼打包寄賣,在系統(tǒng)維度上可以認(rèn)為轉(zhuǎn)轉(zhuǎn)官方驗(yàn)沒(méi)有不能質(zhì)檢的品類。

在傳統(tǒng)的報(bào)告中,通常采用固定的模板和結(jié)構(gòu),無(wú)法滿足在N品類中的靈活訴求。而輕質(zhì)檢報(bào)告的目標(biāo)是提供一種自由組合和解析的方式,可以按照不同的訴求,自由選擇和配置去不同的質(zhì)檢報(bào)告呈現(xiàn)出來(lái),同時(shí)也需要確保報(bào)告的邏輯和數(shù)據(jù)的準(zhǔn)確性,避免信息的混亂或錯(cuò)誤的解讀,為此轉(zhuǎn)轉(zhuǎn)輕質(zhì)檢報(bào)告可能需要建立靈活的數(shù)據(jù)解析和處理引擎。

N品類在官方驗(yàn)賣場(chǎng)的質(zhì)檢報(bào)告如圖所示:

質(zhì)檢報(bào)告質(zhì)檢報(bào)告

1.2 組件式規(guī)則引擎及其應(yīng)用潛力

組件式規(guī)則引擎是一種將規(guī)則拆分為獨(dú)立組件并通過(guò)組合和配置來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯的規(guī)則引擎。它把規(guī)則表示為可重用和可配置的組件,每個(gè)組件負(fù)責(zé)處理一個(gè)特定的規(guī)則或規(guī)則集合。這些規(guī)則組件可以通過(guò)組合、連接和配置來(lái)構(gòu)建復(fù)雜的業(yè)務(wù)規(guī)則,以滿足不同的需求和場(chǎng)景。

在公司的系統(tǒng)中充斥著復(fù)雜且豐富多樣的業(yè)務(wù)邏輯,承載的也是公司各種各樣的核心業(yè)務(wù)功能,每個(gè)復(fù)雜的業(yè)務(wù)都涉及到RPC的調(diào)用,不同步驟不同的業(yè)務(wù)規(guī)則的處理,數(shù)據(jù)的運(yùn)算等。隨著時(shí)間的推移和版本的地迭代維護(hù)的成本會(huì)越來(lái)越高。代碼的抽象,復(fù)用情況也會(huì)越來(lái)越差,各個(gè)模塊耦合度變高。邏輯的變動(dòng),會(huì)影響到其他模塊,也會(huì)帶來(lái)一定的測(cè)試成本。

先看個(gè)在電商行業(yè)中簡(jiǎn)單的例子:

假設(shè)平臺(tái)希望根據(jù)不同的用戶類型和購(gòu)買行為來(lái)發(fā)放優(yōu)惠券。以下是一個(gè)組件式規(guī)則引擎的簡(jiǎn)單編排例子:

  1. 規(guī)則組件(A): 用戶類型規(guī)則組件

條件:用戶類型為新用戶

動(dòng)作:發(fā)放新用戶專享優(yōu)惠券

  1. 規(guī)則組件(B): 購(gòu)買金額規(guī)則組件

條件:購(gòu)買金額超過(guò)一定閾值

動(dòng)作:發(fā)放滿減優(yōu)惠券

  1. 規(guī)則組件(C): 商品類別規(guī)則組件

條件:購(gòu)買特定商品類別

動(dòng)作:發(fā)放該商品類別相關(guān)的優(yōu)惠券

  1. 規(guī)則組件(D): 優(yōu)惠券疊加規(guī)則組件

條件:用戶已經(jīng)擁有一張優(yōu)惠券

動(dòng)作:根據(jù)疊加規(guī)則判斷是否發(fā)放額外的優(yōu)惠券

以上的A,B,C,D四個(gè)組件,按照順序執(zhí)行。

規(guī)則編排規(guī)則編排

在例子中,每個(gè)規(guī)則組件都是一個(gè)獨(dú)立的組件,負(fù)責(zé)處理特定的規(guī)則。它們可以通過(guò)組合和配置來(lái)構(gòu)建復(fù)雜的優(yōu)惠券發(fā)放規(guī)則。

通過(guò)組件式規(guī)則引擎的編排,平臺(tái)可以根據(jù)不同的條件和業(yè)務(wù)規(guī)則,靈活地發(fā)放不同類型的優(yōu)惠券。同時(shí),這種模塊化的設(shè)計(jì)讓規(guī)則的管理和維護(hù)更加方便,可以根據(jù)業(yè)務(wù)需求進(jìn)行靈活的調(diào)整和擴(kuò)展,比如實(shí)時(shí)的去增加一個(gè)E組件,或者去掉一個(gè)B組件,在或者C可依賴AB,AB并發(fā)執(zhí)行等。

2 組件式規(guī)則引擎概述

2.1 LiteFlow的核心概念和特點(diǎn)

LiteFlow是一款組件式規(guī)則引擎,它通過(guò)將規(guī)則拆分為獨(dú)立的組件,以靈活、可組合的方式進(jìn)行規(guī)則編排和執(zhí)行。以下是該規(guī)則引擎的核心概念和特點(diǎn):

  • LiteFlow的核心流程核心流程
  • 組件(Component - A B C):每個(gè)組件獨(dú)立處理特定的規(guī)則邏輯
  • 條件(Condition):條件用于判斷是否滿足某個(gè)規(guī)則的觸發(fā)條件。
  • 動(dòng)作(Action):動(dòng)作是規(guī)則觸發(fā)后執(zhí)行的操作。
    實(shí)際業(yè)務(wù)中可以理解為每個(gè)處理的Class類標(biāo)記為一個(gè)LiteFlow中的一個(gè)組件規(guī)則,定義如下,滿足了條件就執(zhí)行相應(yīng)動(dòng)作。
@Slf4j
@LiteflowComponent(FlowNodeVar.DYNAMIC_APPOINT)
public class DynamicAppointCmp extends NodeComponent {
  // 條件
  isAccess();
  // 動(dòng)作
  process();
}
  • 編排(Orchestration):編排是指將多個(gè)組件按照特定的順序和邏輯組合起來(lái)形成規(guī)則流程。
    例如:
THEN (A,B,C,D)  // 串行執(zhí)行四個(gè)節(jié)點(diǎn)。
WHEN (A,B,C,D)  // 并行執(zhí)行四個(gè)節(jié)點(diǎn)。
SWITCH(A).to(B, C, D) // 利用A的結(jié)果去選擇執(zhí)行B,C,D任一節(jié)點(diǎn)。
THEN(IF(X, A),B) // 如果X=TRUE執(zhí)行A, 否則執(zhí)行B
....

能夠非常靈活的去定義組件的執(zhí)行流程, 如下圖所示A, B, C, D四個(gè)規(guī)則節(jié)點(diǎn),可以通過(guò)不同的Chain-1, Chain-2去編排,而Chain的內(nèi)部就是各樣的WHEN THEN 等條件去編排各個(gè)節(jié)點(diǎn)而設(shè)立的執(zhí)行規(guī)則。

  • 編排元數(shù)據(jù)信息
  • 數(shù)據(jù)上下文(Data Context):LiteFlow使用數(shù)據(jù)上下文來(lái)共享和傳遞數(shù)據(jù)(多線程隔離)。

上下文

  • 執(zhí)行引擎(Execution Engine):執(zhí)行引擎是LiteFlow的核心組件,負(fù)責(zé)解析規(guī)則流程,按照定義的順序執(zhí)行組件,并處理組件間的數(shù)據(jù)傳遞和上下文管理。執(zhí)行引擎

總的來(lái)說(shuō),LiteFlow組件式規(guī)則引擎的核心概念是組件、編排、條件和動(dòng)作。它具有靈活的規(guī)則組合和配置能力,支持?jǐn)?shù)據(jù)上下文共享和傳遞,以及可擴(kuò)展性。這些特點(diǎn)使得LiteFlow成為一個(gè)強(qiáng)大而靈活的規(guī)則引擎,適用于各種業(yè)務(wù)場(chǎng)景的規(guī)則編排和執(zhí)行。

2.2 為什么選擇該引擎處理輕質(zhì)檢報(bào)告

常用的規(guī)則引擎組件,例如:drools、easy-rules、liteFlow等。根據(jù)自己的業(yè)務(wù)場(chǎng)景選擇合適的組件無(wú)疑是最好的。在轉(zhuǎn)轉(zhuǎn)寄賣中用戶物品質(zhì)檢完成后賣法的判斷(寄賣,回收...)選擇了easy-rules,因?yàn)槠錁I(yè)務(wù)邏輯中存在過(guò)多的if else 邏輯判斷,它能夠簡(jiǎn)練的把規(guī)則定義好按照規(guī)則執(zhí)行。但在輕質(zhì)檢報(bào)告中選用liteflow 處理主要考慮幾個(gè)方面:

  • 實(shí)時(shí)的增加組件,移除組件,編配不同場(chǎng)景的規(guī)則執(zhí)行鏈,這將帶來(lái)的好處是我可以隨時(shí)的調(diào)整報(bào)告所呈現(xiàn)的內(nèi)容信息,各種各樣的規(guī)則執(zhí)行鏈也會(huì)對(duì)應(yīng)各樣的報(bào)告頁(yè)面或業(yè)務(wù)數(shù)據(jù)的依賴場(chǎng)景。
  • 各個(gè)組件之間具備并發(fā)處理能力且數(shù)據(jù)上下文線程隔離。
  • 規(guī)則定義能夠直接集成第三方比如Apollo,Nacos,Etcd,Zookeeper中,且具備熱刷新機(jī)制,規(guī)則變化,無(wú)需重啟應(yīng)用,即時(shí)去改變報(bào)告的規(guī)則。高并發(fā)下不會(huì)因?yàn)樗⑿乱?guī)則導(dǎo)致正在執(zhí)行的規(guī)則有任何錯(cuò)亂所帶來(lái)報(bào)告展示問(wèn)題。
  • 框架內(nèi)自帶一個(gè)監(jiān)控,能夠知道每個(gè)組件的運(yùn)行耗時(shí)排行,可以感知某個(gè)規(guī)則出現(xiàn)的問(wèn)題。

3 輕質(zhì)檢報(bào)告處理流程設(shè)計(jì)

3.1 規(guī)則和鏈路處理的簡(jiǎn)述

首先在初始化階段,會(huì)將質(zhì)檢報(bào)告生成的規(guī)則存儲(chǔ)插件(Apollo)中,規(guī)則通過(guò)解析器加載到規(guī)則引擎,然后通過(guò)構(gòu)建器構(gòu)建工程中定義的各個(gè)組件(A,B,C等)節(jié)點(diǎn)和規(guī)則執(zhí)行鏈進(jìn)行加載,執(zhí)行器獲得執(zhí)行鏈路以及執(zhí)行條件和規(guī)則節(jié)點(diǎn),最終按照業(yè)務(wù)請(qǐng)求的執(zhí)行鏈,進(jìn)行節(jié)點(diǎn)執(zhí)行和上下文的數(shù)據(jù)交換。如下圖所示:

規(guī)則的定義和執(zhí)行規(guī)則的定義和執(zhí)行

3.2 在輕質(zhì)檢報(bào)告中配置和集成LiteFlow

  • 集成數(shù)據(jù)源和服務(wù):LiteFlow通常需要與外部數(shù)據(jù)源和服務(wù)進(jìn)行集成。涉及連接配置中心、RPC等操作,以獲取所需的數(shù)據(jù)和執(zhí)行規(guī)則所需的規(guī)則。

圖片圖片

  • 執(zhí)行器初始化
  • 設(shè)計(jì)規(guī)則組件:根據(jù)規(guī)則需求,設(shè)計(jì)和定義規(guī)則組件。每個(gè)規(guī)則組件負(fù)責(zé)處理特定的規(guī)則邏輯,具備條件判斷、動(dòng)作執(zhí)行、數(shù)據(jù)轉(zhuǎn)換等。規(guī)則組件具備獨(dú)立性和可重用性。

報(bào)告規(guī)則劃分報(bào)告規(guī)則劃分

  • 創(chuàng)建規(guī)則流程:在LiteFlow中創(chuàng)建規(guī)則流程,將規(guī)則組件按照需要的順序進(jìn)行編排。規(guī)則流程定義了規(guī)則的執(zhí)行順序和流程控制邏輯。

質(zhì)檢報(bào)告規(guī)則編排質(zhì)檢報(bào)告規(guī)則編排

這里只列舉了兩種報(bào)告的編排形式,在內(nèi)部系統(tǒng)流程中還有其他場(chǎng)景的一些編排。

  • 配置中心配置規(guī)則組件:對(duì)每個(gè)規(guī)則組件進(jìn)行配置,設(shè)置條件、定義動(dòng)作和指定數(shù)據(jù)上下文。

3.3 進(jìn)一步提高輕質(zhì)檢報(bào)告配置能力

通過(guò)對(duì)一個(gè)質(zhì)檢組(外觀檢測(cè))的icon和匯總描述文案進(jìn)行配置化,通過(guò)兩種存儲(chǔ)在配置中心的規(guī)則,使得質(zhì)檢項(xiàng)的匯總提示信息進(jìn)行自定義配置化處理。

報(bào)告細(xì)節(jié)處理報(bào)告細(xì)節(jié)處理

4 總結(jié)

本文介紹了轉(zhuǎn)轉(zhuǎn)寄賣業(yè)務(wù)下輕質(zhì)檢報(bào)告采用LiteFlow編排式規(guī)則引擎的實(shí)踐。在N品類質(zhì)檢能力上線以來(lái),多次的質(zhì)檢報(bào)告變更做到無(wú)需上線配置生效的目標(biāo),一定程度上降低了開(kāi)發(fā)成本。

關(guān)于作者:

趙路通,轉(zhuǎn)轉(zhuǎn)C2C&寄賣業(yè)務(wù)研發(fā)工程師

責(zé)任編輯:武曉燕 來(lái)源: 轉(zhuǎn)轉(zhuǎn)技術(shù)
相關(guān)推薦

2023-06-07 08:32:32

引擎技術(shù)while

2024-02-27 08:25:52

LiteFlow代碼語(yǔ)法

2024-06-19 19:02:58

2022-11-02 09:02:08

Drools引擎DMN

2023-03-22 08:32:35

2022-10-28 09:15:02

2022-10-28 08:31:43

2023-03-15 10:25:00

架構(gòu)EJC桌面

2023-04-19 13:18:41

動(dòng)態(tài)線程池平臺(tái)

2023-08-24 08:11:39

斷路器監(jiān)控報(bào)警

2024-08-29 14:44:01

質(zhì)檢埋點(diǎn)

2024-10-16 21:49:24

2024-09-11 19:36:24

2024-09-19 22:22:41

多任務(wù)學(xué)習(xí)

2023-11-01 07:44:29

轉(zhuǎn)轉(zhuǎn)Flutter業(yè)務(wù)

2022-11-07 14:45:26

轉(zhuǎn)轉(zhuǎn)價(jià)格DDD

2023-12-27 19:12:42

OLAP自助分析

2023-03-02 08:32:41

2023-03-02 08:54:32

2017-06-13 16:03:35

混合云容器編排引擎
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)