在SCXML狀態機中,我該怎麼說「在進入此狀態3分鐘後觸發事件,但如果我坐在狀態2.9分鐘然後離開,則不會。我重新進入狀態,重新啓動計時器(不要在0.1分鐘內關閉)「在SCXML狀態機中創建超時
回答
使用<send>
在進入狀態時觸發延遲事件(帶有任何名稱,例如」超時「),並且退出狀態以刪除計時器時使用<cancel>
。您必須確保您爲每個計劃稍後取消的實例創建一個唯一的ID。
<scxml xmlns='http://www.w3.org/2005/07/scxml' version='1.0'>
<state id="s1">
<onentry><send id="state1-timer" event="timeout" delay="180s"/></onentry>
<onexit><cancel sendid="state1-timer"/></onexit>
</state>
<!-- ... --->
</scxml>
注:只能使用兩種s
(秒)或ms
(毫秒)的延遲時間,每CSS2 time spec。因此,3分鐘是180s
。
只是爲將來的用戶提供的一個提示......上面的答案很接近但並不準確。 請參閱http://www.w3.org/TR/2006/WD-scxml-20060124/ 在send中,將id改爲sendid。它會發送很好,但設置取消的ID - 它不會正確取消。直到我走了調度程序代碼,我才意識到這一點,它並沒有觸發!
@EvanReynolds您的評論基於舊的SCXML規範工作草案。根據[候選推薦](https://www.w3.org/TR/scxml/#send),'
當我寫評論時是最新的。 :-)感謝您提供最新信息,這很好理解! – 2017-06-20 00:04:46
- 1. 如何測試Qt SCXML狀態機
- 2. 在python中創建狀態機
- 3. SCXML狀態圖和UML狀態圖有什麼區別?
- 4. 如何在java中創建一個簡單的狀態機
- 5. 在excel中創建動態超鏈接
- 6. 在Tableau中創建總體RAG狀態
- 7. 在Xcode中創建狀態欄/ Xamarin
- 8. 在狀態機
- 9. 超聲波傳感器狀態機圖
- 10. 問題在SCXML
- 11. Commons SCXML - 強制跳轉到給定狀態
- 12. 如何在apache commons中的相同狀態再次調用Invoker SCXML
- 13. 建模識別狀態與建模驗證的狀態機圖
- 14. Lamport時鐘和狀態機
- 15. 在SOAPUI中創建超時場景
- 16. KineticJS - 動態創建形狀
- 17. 如何創建在斷開連接時丟失狀態的Azure虛擬機?
- 18. VHDL狀態機正在跳過狀態
- 19. Ruby中的動態狀態機?狀態機必須是類嗎?
- 20. 創建狀態的熱圖在巴西
- 21. 在狀態欄頂部創建UISwipeGestureRecognizer
- 22. 在Saltstack創建「更新全部」狀態
- 23. 在zabbix中動態創建主機組一段時間
- 24. J2ME模擬器中的媒體異常:在創建相機快照時超時
- 25. 如何創建隨機的動作條和狀態欄創建模式
- 26. 如何在React中動態創建狀態?
- 27. 在動態創建的菜單中避免全局狀態
- 28. 會話狀態超時參數問題
- 29. HTTP會話超時後保留狀態
- 30. 查看狀態超時錯誤
+1內容豐富。您使用SCXML的平臺是什麼? – deepmax 2013-02-25 23:08:52
@MM。我正在使用[我自己的翻譯](https://github.com/Phrogz/LXSC),它在[定製硬件](http://shield.nvidia.com/)上的Lua上運行。 (這個基於Lua的解釋器可能會在不久的將來被一個定製的C++解釋器替代。) – Phrogz 2013-02-25 23:19:34