アクティブ状態とアイドル状態の2つの状態があるとしましょう。アクティブ状態でイベントを受け取った場合は、それらを延期して、アイドル状態に戻ったときに実行したいと思います。
しかし、アイドル状態に戻ったときに、以前に延期されたどのイベントを処理するかを選択する方法はありますか?または、それらに優先順位を付けたり、それらのいくつかを無視したりする方法はありますか?
ありがとう、
アクティブ状態とアイドル状態の2つの状態があるとしましょう。アクティブ状態でイベントを受け取った場合は、それらを延期して、アイドル状態に戻ったときに実行したいと思います。
しかし、アイドル状態に戻ったときに、以前に延期されたどのイベントを処理するかを選択する方法はありますか?または、それらに優先順位を付けたり、それらのいくつかを無視したりする方法はありますか?
ありがとう、
私はMSMを後押しするためのネイティブなソリューションを知りません。著者のクリストフ・ヘンリーは、メーリングリストのこの種の質問に非常に敏感だと聞いています。
あなたの状況が本当に些細なこと(2つの状態のみ)である場合、アクティブで「遅延イベント」を渡すことで、独自の遅延イベントキューを実装することを妨げるものは何もありません。イベントタイプごとに、それらをカスタムキューにプッシュするアクションを使用して内部遷移を実装できます。アイドル状態に入ると、好きなように並べ替えて、すべてSMにポストバックできます。ただし、このソリューションはそれほど拡張性がなく、少しハックされます。
延期されたイベントの基本的な機能は、プロジェクトで提供されているドキュメントでカバーされていることがわかります。これは、一般的に役立つと思います。「直交領域、状態の終了、イベント遅延」というタイトルのセクションで、「UMLはイベント遅延を状態プロパティとして定義します。これに対応するために、MSMではdeferred_eventsタイプを指定することで状態でこれを指定できます...」というテキストを探します。遅延イベントを実装するためにそこで説明されている2つの異なる方法。
例をテストせずに、競合する遷移とガードに関する参照資料で、延期されたイベントで求めている優先順位を確立できるかどうかはわかりません。問題や簡単な例を投稿できます。