業務驅動 狀態機

業務驅動 狀態機

描述

通過有限狀態機(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請求隊列
狀態1

詳細講解

ProduceQueue 發送隊列方法,定義接口統一被上層調用,充分利用Redis的阻塞隊列模式,先進先出
ConsumeQueue 接受發送隊列的消息,一條條獲取成功後調用handle統一處理
EventHandle:抽象事件,定義執行方法和獲取類型
Event:事件處理參數對象
Logical:領域模型

總結

本文講述事件驅動如何驅動業務鏈以及請求隊列的使用方式,驅動等方式可以解耦業務和功能,充分利用設計模式、管道等特性。讓編程變的簡單化
請求隊列可以用作消息事件、監聽事件等

作者簡介:張程 技術研究

更多文章請關注微信公衆號:zachary分解獅 (frankly0423)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章