問題タブ [spring-statemachine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
757 参照

spring - Spring データの Spring Statemachine 永続化

私たちは現在、スプリング ステート マシンを調査しており、リポジトリを使用したプールとコンテキスト スイッチングを備えた eventservice サンプルと非常によく似たニーズがあります。春のデータを使用して永続性を統合するためのクリーンですぐに使える方法はありますか、それとも StateMachinePersister の独自の実装を作成する必要がありますか。

https://github.com/spring-projects/spring-statemachine/tree/master/spring-statemachine-samples/eventservice/src/main/java/demo/eventservice

AbstractStateMachinePersister または StateMachinePersist を使用する必要がありますか?

ありがとう!

0 投票する
1 に答える
380 参照

spring-statemachine - StateMachineBuilder 内で UmlStateMachineModelFactory を使用できますか

StateMachineBuilder を使用して state machine を作成しています。状態と遷移を構成するためにプログラムで使用する必要がありました。

しかし、いくつかの要件の変更により、私の構成はほぼ一定であり、状態マシンを動的またはプログラムで構築する必要がなくなったため、Eclipse UML モデリングを使用したいと考えました。大きなコードのやり直しを避けるために、以下のようにビルダー内で UmlStateMachineModelFactory を使用することを考えました。

1) ステート マシンでは合法ですか? そうだとすれば、各ステートのエントリ アクションをどのようにアタッチできますか?

現在ビルダーを使用しています各状態のエントリアクションを添付するために以下のコードを使用しています

stateConfigurer.state("State1", this.state1EntryAction, null);

2) UML モデル内のエントリ アクション クラスの名前を指定して、各ステージにエントリ アクションを追加することはできますか? もしそうなら、どうすれば日食パピルスでそれを行うことができますか。

前もって感謝します!

0 投票する
1 に答える
1833 参照

spring-statemachine - スプリング ステート マシンでの並列実行

Papyrus を使用して、UML モデルに続くステート マシンを構築しようとしています。各ステージの entryActions は、 DefaultStateMachineComponentResolver を使用して登録され、Spring アプリのそれぞれの EntryAction クラスに解決されます。私の要件は

1) CS ステージから、トリガー イベント SUCCESS を取得すると、実行は 2 つのスレッドに分岐する必要があります。

2) 1 つのスレッドで DE1 と TE1 を順次実行し、別のスレッドで DE2 と TE2 を順次実行する必要があります。

3) END 状態への移行は、両方のスレッドが正常に実行された場合にのみ発生する必要があります。つまり、TE1 からは、イベント SUCCESS によって通知された状態に参加するために移行が発生し、TE2 からは、イベント SUCCESS によって通知された状態に参加するために移行が発生する必要があります。

4) すなわち。END 状態への遷移は、2 つのスレッドの実行が成功した後に発生する必要があります。

5) いずれかのタスクが失敗した場合 (タスクは EntryAction クラスで記述されます)、各ステージの実行中に、ステート マシンは END 状態に移動する必要があります。使用されるシグナルは FAILURE、TERMINATED (発生したエラーの重大度に基づく) です。

これは、ステートマシンを構築して実行をトリガーするために使用したコードです

私が直面した問題

1) taskExecutor の使用中に、ステート マシンの実行が開始されませんでした。

2) taskExecutor をコメントアウトした後、exectuion がトリガーされ、コンソールで entryAction クラスからログを取得しました。

3)各エントリアクションクラスで、次の状態に遷移するため、およびログの目的で以下のコードを追加しました

4) しかし問題は、ログを分析した後、TE1 が入力されていない状態です。私の要件は、TE1EntryAction と TE2EntryAction でタスクを実行した後に END 状態に入る必要があることでした。

ログの下で見つけてください

私が作成した UML モデルに問題がありますか。もしそうなら、ダイアグラムはどのように見えるべきか

助けてくれてありがとう。

ここに画像の説明を入力

0 投票する
2 に答える
1329 参照

spring-statemachine - PersistHandlerConfig から StateMachineFactory を使用する

PersistHandlerConfig (Persist レシピ) を使用して、SSM で POC を実行しています。良さそうに見えますが、他のいくつかの質問が表示されました。

ユーザーごとに 1 つのインスタンスを持つマルチユーザー Web アプリケーションである必要があるため、StateMachineFactory の推奨に従ってコードを変更しようとしましたが、Persistence のレシピはこのケースを処理する準備ができていないようです。

PersistHandlerConfig 内で (sm ID から) 必要な statetemachine を取得する方法はありますか?

0 投票する
1 に答える
494 参照

java - 断続的な「IllegalArgumentException: ソースを設定する必要があります」という階層的なスプリング ステート マシンから

spring-statemachine で階層ステート マシンを構築しようとしています。それぞれが 2 つのサービスの状態を表す 2 つの直交状態を持つ必要があります。次のコードでは、簡単にするために状態の数を減らしていますが、それでも同じエラーが発生します。

まず、設定で何か間違ったことをしましたか?

私が得るエラーは次のとおりです

アプリケーションをデバッグしたところ、spring-statemachine-core AbstractStateMachineFactory buildMachine() で、stateMap に CB および BUFF 状態のいずれかが欠落していることがわかりました。最も奇妙な部分は、どの縫い目がランダムで、実際にはセット全体が含まれている場合があり、例外はありません。

両方の内部トランジションを削除してコードをデバッグしたところ、stateMap が不完全であっても (そして、欠落している状態からのトランジションがあったとしたら失敗していたはずです)、インスタンス化後のステート マシンは希望どおりに見えることがわかりました。あります。

何か案は?

サンプル プロジェクトhttps://www.dropbox.com/s/qlarppnma0dq9ai/statemachineerror.tar.gz?dl=0

0 投票する
3 に答える
605 参照

spring-statemachine - Spring Statemachine はステートフルですか?

私はssmに傾いています.blowは私のデモ設定です:

2 つのイベントをマシンに送信しますが、1 回実行されます。

ssm には状態がありますか?どうすればステートレスで実行できますか?

ビジネス手順を定義するために使用したいだけです。

0 投票する
1 に答える
500 参照

spring-statemachine - ステートマシンでターゲット状態を変更する方法

まず、私のケースがスプリング ステート マシンの使用に適しているかどうかはよくわかりません。

これが私のケースです:

大きな可変オブジェクトと、この可変オブジェクトを特定の順序で操作する一連の論理ユニットがあります。

通常のフローの場合: A.exec -> B.exec -> C.exec -> Done

A から例外がスローされる悪いフローの場合: A -> エラー -> 完了 (B と C はバイパスされます)

B から例外がスローされる悪いフローの場合: A -> B -> 別のフロー

A、B、C は状態としてモデル化できると思いますが、A から B に移動するときにアクションを使用して実際のビジネス ロジックを実行できます。

A からスローされた可能性のある例外をキャプチャし、ターゲットを B ではなく別の状態に変更するにはどうすればよいですか?

ありがとう

レオン

0 投票する
1 に答える
139 参照

spring - 一時的な状態で発生する StateMachineInterceptor

A -> X_choice からの遷移があり、X_choice は B または C のいずれかに移動します。A -> B からの遷移をログに記録できるように、インターセプターが必要です || C. 考えられるイベント (preStateChanged など) のいずれかにフックしようとすると、A -> X_choice からの遷移しか得られません。X_choice -> B または X_choice から移動する場合、コールバックは発生しません。これを簡単に行う方法はありますか?

そして、次のように定義された StateMachinerInteceptor があります。

私が欲しいのはこれです:

または、代わりに 2 つのコールバック、1 つは A -> X_choice から、もう 1 つは X_choice -> B. これは実行可能ですか? 私は Persist レシピを使用しているため、これが必要であり、永続化は実際の端末状態ではなく Choice 状態を実際に永続化しています。