EA&UML日拱一卒--活動圖::數據區
流程說到底是在處理數據,一般情況下一個活動或動作結束執行後輸出數據,下一個活動或動作收到數據後開始執行。但也有另外一種情形,產生的數據先放到某處暫存,等後續處理使用。對於這種情況,UML提供了兩種方法:中央緩衝節點和數據存儲節點。
中央緩衝節點(central buffer node)
語義
中央緩衝節點可以同時從多個對象節點接收輸入,並可以為多個對象節點產生輸出。和對象流不同,中央緩衝節點提供的數據不作為活動或動作的啟動條件。
中央緩衝節點中的數據輸出是以數據移動的形式進行的。
表示法
中央緩衝節點表示為帶有關鍵字《centralBuffer》的對象節點符號。
示例
下圖是複印流程中使用中央緩衝節點的例子。
掃描單元完成一次掃描以後,將ImageData保存在centralBuffer中
列印單元從centralBuffer中取得數據以後列印輸出。
數據存儲節點(data store node)
語義
數據存儲節點就是帶有數據持久化功能的中央緩衝節點。
數據存儲節點可以同時從多個對象節點接收輸入,並可以為多個對象節點產生輸出。數據的輸入流和輸出流是不相連的,也就是說數據的存儲和使用要求可以來自不同的線程。
到這裡為止,內容沒有本質的區別,可以看作是相同點。接下來是不同點。
數據存儲節點和中央緩衝節點輸出數據的行為是不同的。中央緩衝節點輸出的是數據本身,而數據存儲節點輸出的是數據的拷貝,數據本身是在包含該數據存儲節點的活動結束以後才會被銷毀的。
表示法
數據存儲節點表示為帶有關鍵字《datastore》的對象節點。
示例
以下是某數據採集系統的例子。
三個流程分別
1. 以0.1S周期採集模擬信號並存儲在SystemData中
2. 接受中斷請求後採集數字信號並存儲在SystemData中
3. 從SystemData中取得數據並表示
數據表示以後,還需要保留在系統中以供將來使用,因此這裡使用數據存儲節點。
以上就是今天的文章,如果它能給您帶來些許收穫,歡迎點贊並推薦給您的朋友!
閱讀更新更多文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※Python實用技巧——類,屬性與裝飾器
※EA&UML日拱一卒--類圖::枚舉類型(enumeration)
※狀態圖::狀態
※EA&UML日拱一卒--活動圖::對象流
※多任務編程超入門-(1) 什麼是多任務