1. 程式人生 > >初試SpringStateMachine框架實現狀態機

初試SpringStateMachine框架實現狀態機

官網這裡列出了很多特性,說的就是易於使用的狀態機,幫助開發者簡化狀態機的開發過程,讓狀態機結構更加層次化。

狀態機

有限狀態機(FSM),簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。 

狀態儲存關於過去的資訊,就是說:它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給定時刻要進行的活動的描述。

寫一個demo

在pom.xml中加入依賴:

定義訂單狀態

訂單事件:

然後寫一個配置類:

@EnableStateMachine註解用來啟用Spring StateMachine狀態機功能

configure(StateMachineStateConfigurer<States, Events> states)方法用來初始化當前狀態機擁有哪些狀態

configure(StateMachineTransitionConfigurer<States, Events> transitions)方法用來初始化當前狀態機有哪些狀態遷移動作,其中命名中我們很容易理解每一個遷移動作,都有來源狀態source,目標狀態target以及觸發事件event

然後寫個 Application 類:

日誌輸出:

run函式中,我們定義了整個流程的處理過程,其中start()

就是建立這個訂單流程,根據之前的定義,該訂單會處於待支付狀態,然後通過呼叫sendEvent(Events.PAY)執行支付操作,最後通過掉用sendEvent(Events.RECEIVE)來完成收貨操作。

有以下模組可供選擇使用

這只是根據文件嘗試一下,statemachine還有很多內容,以後再續!

有什麼討論的內容,可以加我公眾號: