3

ウィキペディアに基づいて、状態を個別に変更できる複数の直交領域を持つ階層的な状態分解を行うことができます。

この図は、直交領域がどのように入力されるかを示しています。エントリーはすべての地域で並行して行われると想定しています。私が知りたいのは、出口をどのように表現するかということです。各リージョンに出口がある場合、最初の子リージョンが終了したとき、またはそれらがすべて終了したときに、グローバルな親状態が終了しますか? それらがすべて終了したときに終了が発生することを表現したいと思います。そして、すべての子領域が終了したために、グローバルな親状態が次のグローバル状態に遷移することをどのように表現しますか? それは常に暗黙的ですか?

私の具体的な問題は、FSM が Initializing グローバル状態で開始することです。複数のクエリを複数の外部システムに非同期で並行して送信します。各クエリに対する回答を受信した場合にのみ、次に進むことができます。そこで、各非同期並列クエリを、グローバルな Initializing 状態内の直交領域としてモデル化します。各子リージョンは、独立して状態を変更できます。すべての子リージョンが終了状態に達したら、次に進みます。

FSM は、非同期メッセージ (イベント) が通信する唯一の方法であるアクター フレームワークに実装されます。

理想的には、言葉で表現するのが難しいので、例の画像を指して答えてほしいです.

4

1 に答える 1

7

直交状態からの完了遷移は、すべての直交領域が終了したときに実行されるため、うまくいきます。

複合状態(内部状態および/または直交領域を持つ状態)に入ると、各領域は初期状態から始まり、フォーク疑似ノードを使用して各領域の異なる状態になり、状態に入ると各領域の最後の状態になります。履歴疑似状態を介して。複合状態の終了は、現在の状態からすべての直交領域が存在する内部状態の1つで開始する遷移を介して実行できます。マシンがさまざまなリージョンの一連の状態になったときに終了する場合は、結合疑似状態を使用することもできます。

ご覧のとおり、可能性はほぼ無限大です。まだ画像を追加できませんが、後で優れたUMLエディタが手元にあるときに追加します。

今の例。次のステートマシンがあるとします。 ステートマシンの例

  1. 両方の並列領域が終了する(最終ノードに到達する)場合、完了遷移はマシンをからS1に移動しS5ます。の場合
  2. マシンが現在にS3あり、を受信して​​いる場合、マシンはe1終了S1してに移動しS6ます。
  3. マシンが入っS7S8いて、両方が終了した場合、それは結合に移動し、次にに移動しS6ます。

これは、ステートマシンが機能することを私が知っている方法です。

于 2012-07-08T15:27:38.730 に答える