ステートとテンプレート
SteteGoは『状態遷移図』を設計するツールです。
状態をあらわすステートと呼ばれるノードに直接プログラムコードを書き込みます。
書き込まれたプログラムコードは、テンプレートを使い、再配置され、ソースコードに変換されます。
ステートは内部にテーブルを持ち、プログラムの各要素ごとにプログラムコードを書くようになっています。
プログラム要素は以下の通りです。 ※説明のため簡略化しています。
- ステート名
- 初期化処理
- 更新処理
- 待機条件
- 分岐処理
テンプレートは、これらの要素を再配置します。
例えばC#の場合以下のテンプレートが用意されます。
void [[ステート名]](bool bFirst) // 分岐されるまで何度も呼ばれる
{
if (bFirst) //最初のみtrueとなる。
{
[[初期化処理]]
}
[[更新処理]]
if ([[待機条件]]) return; // 条件がtrueであれば再びこの関数が呼ばれる。
[[分岐処理]]
}
StateGoは、ステートのテーブルの各項目のプログラムをテンプレートに当てはめて再配置します。
上記のテンプレートでは初期化処理がない場合や待機条件がない場合に文法エラーが発生します。
しかし、テンプレートでは回避する方法が用意されています。