状態モデルは、 1 つのタイプのレコードのプロセス モデルを表します。状態は、レコードの状態 (Submitted、Assigned、Opened、Closed など) を表します。 CHANGE_STATE アクションは、ユーザーが実行するアクティビティであり、 それによりレコードが次の状態に推移します。代表的な CHANGE_STATE アクションには、 Submit、Assign、Close などがあります。
このようにレコードが推移することを状態遷移と呼びます。 状態遷移は、遷移元の状態 (現在の状態)、遷移先の状態、レコードを遷移元の状態から遷移先の状態に移行させるアクションから構成されます。
状態モデルは、レコードのタイプに有効なすべての状態と状態遷移を示します。 たとえば、図の状態モデルは、ユーザー アクションの結果として、EnhancementRequest レコード タイプ (いくつかの 事前定義されたスキーマに含まれます) が、どのようにある状態から別の状態に 遷移するかを示しています (図 1 を参照)。
状態モデルの設計は、特定のレコード タイプ (つまり、レコードの特定のタイプ) に有効な すべての状態のリストを作成し、それらの状態を記述するところから始めるのが最善です。 たとえば、EnhancementRequest レコード タイプの状態は次の表のとおりです。
状態モデルとアクションを修正する 2 つの手段があります。 状態遷移マトリックスとアクション グリッドです。
状態遷移マトリックスでは、状態モデルをスプレッドシートのようなグリッドとして表します。 状態は上軸と横軸に一覧表示され、状態間の遷移を可能にするアクションがセルに示されます。
アクション グリッドでは、スキーマに定義済みのアクションを一覧表示します。グリッドの各行には、 アクション名、アクションのタイプ、アクションのアクセス制御の設定、さらにオプションの 初期化、確認、コミット、通知、レコード スクリプトなどの設定が含まれています。