業務驅動 狀态機
描述
通過有限狀态機(FSM)實作業務的驅動,狀态機通過操作驅動(即事件驅動ED)觸發
狀态機可充分利用管理PipeLine模式,讓業務核心程式解耦
使用場景
- 訂單模型/領域
- Redis請求隊列
狀态機業務驅動圖

類圖分析:
State: 狀态實體類,表示一個狀态以及關聯操作、操作後的新狀态定義,通過State類以及配置化到相關配置檔案,可以實作業務一定程度上的可配置化
StateConfigLoader: 狀态機配置檔案加載類
IFSM: 狀态機接口
EDFSMManager: 事件驅動有限狀态機實作類,時間狀态的轉化、執行
FSRequest: 請求參數類
FSResponse: 相應參數類
IFSMOperatorRouter: 操作路由接口
FSMOperatorRouter: 操作路由實作類
IFSMOperator: 操作接口,狀态機通過目前接口驅動相關業務,相關業務類必須實作這個接口
接下來通過訂單模型講解狀态機
詳細講解:
上遊業務統一引入狀态機驅動IFSM,根據類型統一由EDFS管理,管理分為(狀态機生命周期、節點配置等),狀态機根據類型把請求路由到操作者Opeartor,操作者會根據
狀态機類型指向具體某個行為Opeartor,圖中PipeContext 類似Spring的application上下文,裡面有管道抽象接口的子類,每個業務模型對應一個Opera 操作者,Opera繼承抽象父類,Logical對應領域對象處理,由此驅動整個業務流程
IPipeline: 訂單處理非核心業務處理管道接口
PostPipeline: 訂單處理非核心業務處理管道類, 對于訂單進行中,将部分非核心業務處理,通過管道封裝起來,然後和核心業務解耦,一方面提供核心訂單業務的處理速度,同時通過補充的方式實作一個簡單的、輕量級的分布式事務
IPipeValue: 管道操作類接口,任何要放入管道執行的類對象都必須實作這個接口
PipeContext: 管道上下文類
Logical 具體業務邏輯實作層
Redis請求隊列
詳細講解
ProduceQueue 發送隊列方法,定義接口統一被上層調用,充分利用Redis的阻塞隊列模式,先進先出
ConsumeQueue 接受發送隊列的消息,一條條擷取成功後調用handle統一處理
EventHandle:抽象事件,定義執行方法和擷取類型
Event:事件處理參數對象
Logical:領域模型
總結:
本文講述事件驅動如何驅動業務鍊以及請求隊列的使用方式,驅動等方式可以解耦業務和功能,充分利用設計模式、管道等特性。讓程式設計變的簡單化
請求隊列可以用作消息事件、監聽事件等
作者簡介:張程 技術研究
更多文章請關注微信公衆号:zachary分解獅 (frankly0423)