天天看點

業務驅動 狀态機

業務驅動 狀态機

描述

通過有限狀态機(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)

業務驅動 狀态機

繼續閱讀