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) 什麼是多任務

TAG:面向對象編程 | 面向對象分析與設計 | UML建模 |