初試SpringStateMachine框架實現狀態機

官網:https://projects.spring.io/spring-statemachine/html

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

狀態機api

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

狀態存儲關於過去的信息,就是說:它反映從系統開始到如今時刻的輸入變化。轉移指示狀態變動,而且用必須知足來確使轉移發生的條件來描述它。動做是在給定時刻要進行的活動的描述。3d

寫一個demo日誌

在pom.xml中加入依賴:code

定義訂單狀態xml

訂單事件:htm

而後寫一個配置類:blog

@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)來完成收貨操做。

文檔地址(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/reference/htmlsingle/

Api(https://docs.spring.io/spring-statemachine/docs/2.0.3.BUILD-SNAPSHOT/api/

有如下模塊可供選擇使用

這只是根據文檔嘗試一下,statemachine還有不少內容,之後再續!

有什麼討論的內容,能夠加我公衆號:

相關文章
相關標籤/搜索