指定狀態圖保護

狀態圖保護是根據物件屬性及事件資料評估的條件式表示式。

關於這項作業

IBM® Rational® Rhapsody® 不會解譯保護。它們是主語言表示式,或只是程式碼片段,必須解析為可以測試的布林或整數值。否則,不會編譯針對保護產生的狀態圖程式碼。

下列範例顯示轉移標籤,其包含保護及動作,會使用 GEN 巨集來產生事件:

[x > 7]/controller->GEN(A7Failures)

轉移只可以包含一個保護。狀況的從低到高轉移(或布林值)會視為觸發事件。例如,下列保護是有效的轉移標籤:

[x > 7]

播放動畫期間,所有沒有觸發程式的保護,都會在每次事件發生時進行測試。下列狀態圖使用數個沒有轉移的保護。

使用沒有轉移之保護的狀態圖

此狀態圖適用於家庭警示系統的小鍵盤。當警示系統的小鍵盤處於閒置狀態中時,您可以輸入程式碼來建立警示的讀寫臂,然後離開房間。輸入程式碼之後,您可按「開」按鈕來開啟警示。按「開」按鈕會發出 evKeyOn 事件。每當此事件發生時,狀態機器會評估決策節點之後到達的兩個保護 [IS_IN(correct)][IS_IN(notEntered)],並遵循其中一個評估為 true 的路徑。

透過使用動畫序列圖,您可以看到何時測試保護。如果您想要更頻繁地測試條件,或比事件發生頻率更頻繁的定期測試,則您可以建立輪詢機制。若要這樣做,請建立從狀態到其自己的較短逾時轉移,以便保護至少會在發生此類情況時評估為開。另外,您可以使用另一個物件來輪詢,並將目前狀態圖中的保護取代為從輪詢物件發出信號的事件。

註: 一般不使用可導致副作用的保護,因為可能會導致應用程式中的問題。

回饋