私は主にac#開発者であり、一連の長時間実行プロセス用の有限状態マシンの設計に関するガイダンス(理論および/またはコードサンプル)を探しています。定義された各操作は、数分間実行できます。スケジューリングとインスタンス化を管理するために、Windowsタスクスケジューラを使用しているだけです。
以下は私が見ているものの簡略化された概要です。これまで、ステートレスを使用してOpStatusFSMを構築してきました。今、私は、項目#3のショーなど、いくつかの条件がスローされた状態で操作のシーケンスを処理するための最良の方法を見つけようとしています。これらの条件は、Op2から得られたデータに基づいています。
これまでに検討したオプション:
- 操作シーケンスのFSMを作成します(非常に複雑に見えますが、基本的な部分がどこかに欠けている可能性があります)
- 操作ごとに操作マネージャーを作成し、各マネージャーに、次の状態がどうあるべきかとともに、関心のある状態について心配させます。
操作->シーケンスの次の操作
- なし->Op1
- Op1-> Op2
- Op2->Op3またはOp4条件付き
- Op3-> Op4
- Op4-> Op5
- Op5->なし
OPステータス
- アイドル
- トリガー:スケジュール済み->保留中
- 制約:操作を設定する必要があります
- 保留中
- トリガー:実行->実行中
- ランニング
- トリガー:失敗->エラー
- トリガー:成功->アイドル
- トリガー:NotReady->保留中
- エラー
- トリガー:再試行->保留中
- トリガー:キャンセル->アイドル(割り当てられた操作を削除)