2017-02-02 7 views
1

私はSpring Statemachineをテストしています。特に、ステートマシンを使ってオブジェクトの状態を管理するのは面白いです。Spring Statemachineの永続性

私のStatemachineのタイプはStateMachine<EpisodeState, EpisodeEvent>です。

ビジネスオブジェクトEpisodeには、EpisodeStateのenumプロパティ(state)があり、これはエピソードのステートマシン状態を保持する必要があります。初期化時にStatemachineのインスタンスを取得するバッチプロセスがあります。

  • ロードデータベースそのEpisodeインスタンスであるEpisodeStateからステートマシンの現在の状態を設定し
  • からEpisode:私は基本的な流れに従うことをしたいと思います。
  • Statemachineにイベントを送信します。
  • Statemachine(postイベント)から結果の状態を取得し、EpisodeStateEpisodeインスタンスに設定します。
  • Episodeインスタンスを保存します。

ドキュメントは私のテストでは空であるextendedStateプロパティを、言及が、私は、私は私のEpisodeの主キーを保持するために使用できると仮定し、任意のオブジェクトのマップをサポートしているようだが、私は途方に暮れていますステーママシンの現在の状態をEpisodeEpisodeStateの値に設定する方法について説明します。

ステートマシンをStateMachineInterceptorAdapter<EpisodeState, EpisodeEvent>に設定しました。前/後の状態変更、前/後の移行、およびpreEventの情報を見ることができます。あなたはこのようにそれを行うだろう、startingStateという変数に必要な最初の状態を持っていると仮定すると

答えて

2

さらなる研究は(ない春のステートマシンのドキュメントで)、私は、ステートマシンの状態を設定する方法を見つけました:

stateMachine.stop(); 
stateMachine 
    .getStateMachineAccessor() 
    .doWithAllRegions(access -> 
     access.resetStateMachine(new DefaultStateMachineContext<>(startingState, null, null, null))); 
stateMachine.start(); 
関連する問題