質問

AとBの2つのコンポーネントを含むシステムと

システムは同時にAとBを起動します。 Aは状態を通過することができます{A.Starting、A.Ready}、およびBは状態{b.Starting、B.Doingx、B.Doingy}になります。 (AとBの状態間の移行のイベントは、それに応じて名前が付けられています:b.doingx => bはb.doingxなどに行きます...)

A and B state machine from yuml.me

モデル化したいです

  • AがA.STARTINGであるか、BがB.STARTである間、システムは「開始」です
  • AがA.Readyに、BがB.DoingXにあるとき、システムは「doinx」状態にあります
  • AがA.Readyにあり、BがB.Doingyにあるとき、システムは「Doiny」状態にあります

System state machine from yuml.me

私が間違っていない場合、ここではフォーク/結合疑似ステートを使用できます。

しかし、これらのモデル要素には、上記の構成状態の宣言的なセマンティクスがありますか?これをモデル化する別の方法はありますか?

(注:図はからです http://yuml.me)

役に立ちましたか?

解決

これらを引き離してみませんか?ここにあなたがそれをどのようにモデル化できるかについての別のアイデアがあります(私がそれを正しく理解したと仮定して):

  • A.StartingとB. -Startingと呼ばれる状態を並列領域で含む状態(ここでフォーク/結合するか、「開始」状態のときにアクティブ化されるすべての領域のデフォルトの動作に依存することができます。入力されます)

  • 「A.Ready」状態と別の並列領域を備えた地域を含む別の州の「実行」。

全体的な「doinx」状態が必要な場合は、A.Readyに対応する2つの状態を作成する必要がある場合があります。

とにかく、より広い視点では、「システムは状態にある」と言うとき、あなたの視点は少し離れていると思います。むしろ、そのような状態マシンによってモデル化されたシステムは、一連の状態にあります。したがって、通常、「システムは現在A.ReadyとB.Doingxにある」と言って完全に嬉しいです。

たぶん、必要なのは用語の変更だけです。これはどうですか:

システムがあります 構成 A.ReadyとB.Doingxの状態がアクティブなとき、「Doinx」?

コメントに応えて:はい、これは標準です。これは、上部構造仕様の対応する部分です(バージョン2.4ベータ):

階層状態マシンでは、複数の状態が同時にアクティブになる可能性があります。 [...]現在のアクティブな「状態」は、実際には、根領域の最上位の状態が最も内側の活性物質まで始まる州の一連の木によって表されます。そのような状態の木をaと呼びます 状態構成.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top