官網: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還有不少內容,之後再續!
有什麼討論的內容,能夠加我公衆號: