ステートマシン図
概要
オブジェクトの状態遷移を表現するための図です。
表記法
要素 | 表記 | 説明 |
状態 | ![]() | 状態を表します。内部にさらに状態遷移を描くことができ、これをコンポジット状態と言います。 |
![]() | ||
開始状態 | ![]() | 開始を表します。ステートマシン図1つに対して1つです。 |
終了状態 | ![]() | 終了を表します。 |
状態遷移 | ![]() | 状態遷移を表します。書式は以下のとおりです。 トリガー[[ガード条件]] |
履歴 | ![]() | コンポジット状態から抜け出て、再度入る場合に、前回抜け出た時点の状態からはじめます。履歴から伸びる矢印は、初回の状態遷移を表します。 |
深い履歴 | ![]() | 同レベルおよびそのサブ状態を記憶します。 |
入場点 | ![]() | コンポジット状態の開始状態以外への入り口を表します。 |
退場点 | ![]() | コンポジット状態の開始状態以外からの出口を表します。 |
合成アイコン | ![]() | コンポジット状態において、サブ状態を省略する際に使用します。 |
解説
オブジェクトの状態に着目したダイアグラムです。
あるオブジェクトが複数の状態を取りうる場合、
どのトリガーによってどの状態に遷移するかを明確にできます。
なお、トリガーは以下のように、ガード条件をつけることができ、
条件による分岐を表現するのに使用します。
トリガーのフォーマットです。
エフェクトはトリガー発動契機で実行される処理です。



例
概要 | 表記 | 説明 |
状態遷移 | ![]() |
トリガ1で開始から状態1に遷移します。 |
状態遷移 | ![]() |
トリガ1で開始から状態2に遷移します。トリガ2で開始から状態3に遷移します。 |
自己遷移 | ![]() |
同一の状態に再び入ることを自己遷移といいます。 |
ガード条件 | ![]() |
同一トリガーでも条件により遷移が変わる場合はガード条件で使用します。 ガード条件1を満たしていると状態2に遷移し、ガード条件2を満たしていると状態3に遷移します。 |
コンポジット状態 | ![]() |
状態内のさらに状態を持つケースです。 |
合成アイコン | ![]() |
合成アイコンで内部状態を省略します。 |
サブ状態 | ![]() |
サブ状態です。 |
サブ状態 | ![]() |
開始状態以外に入るケースでは入場点を使用し、終了状態以外から出るケースは退場点を使用します。 |
履歴 | ![]() |
履歴です。最初にコンポジット状態に入る場合、履歴から引かれている状態3に入ります。 状態4の時に状態1に遷移すると、次の遷移先は状態4になります。 |
深い履歴 | ![]() |
深い履歴です。 |
詳細
エフェクト
状態遷移時に行うべき動作を追記することができます。


入場アクション | その状態に入る時点で実行される動作です。 |
アクティビティ | 入場から出場まで継続される動作です。 |
出場アクション | その状態から出る時点で実行される動作です。 |
トリガー
トリガーにはより詳細な書式が用意されています。

エフェクトを記述することでイベント発生時の動作を表せます。

エフェクトを記述することでイベント発生時の動作を表せます。
新旧対応(2.0と1.5)
1.5との相違点です。
項目 | 2.0 | 1.5 | 説明 |
ステートマシン図 | ステートマシン図 | ステートチャート図 | 1.5では名称がステートチャート図になります。 |
トリガー | トリガー | イベント | 1.5では名称がイベントになります。 |
エフェクト | エフェクト | アクション | 1.5では名称がアクションになります。 |
入場点 | ![]() 入場点 | ![]() スタブ | 1.5ではスタブとして縦線で示します。 |
退場点 | ![]() 退場点 | ![]() スタブ | 1.5ではスタブとして縦線で示します。 |