シナリオ:ステートマシン:外部イベントなしで状態を変更する方法(過渡状態)?
ハッピーパス:
Uninitialized->Initialized->InProgress->Done
不幸パス:簡単に言えば
Uninitialized->Initialized->Error
は、私が起こす必要がある私は、単純なステートマシンを持っている
移行(InProgressまたはError状態のいずれか)外部偶数なしt /トリガー。私。初期化された状態は、直ちにそれらの状態の1つになるはずです。
質問:
- それは、Initialized.Enter()内から状態遷移を引き起こすためにOKですか?
- これを行うにはステートガードを使用することができますが、私はステートガードで軽度ではないでしょう(初期化は非常に複雑になる可能性があります)。
- それがOKでない場合は、どうすれば違うのですか?
- 私はこの決定をFSMから一まとめにして、他のコンポーネントが適切な移行を起こさなければならないのでしょうか?しかし、それから私はその外部コンポーネントを内部から呼び出す必要はありませんInitialized.Enter()?それで何も解決しない?
関連:http://stackoverflow.com/questions/1647631/c-state-machine-design/1651187 – jldupont