1. 程式人生 > >如何減少無謂的資源消耗?如何在倉庫拓撲中進行 SOC 設計?

如何減少無謂的資源消耗?如何在倉庫拓撲中進行 SOC 設計?

存儲組織標準

倉庫中的每個存儲單元、傳輸設施以及物品都與特定屬性相關。這些屬性被稱為存儲組織標準(Storage Organization Criteria , SOC)。這個標準定義了特定存儲單元中,可以存儲哪些類型的物品,或者特定傳輸設施可以傳送哪些類型的物品。存儲組織標準的例子還包括:吞吐量類、有害類以及溫度類。


對每一個標準都有特定的、可枚舉的允許值,如對吞吐量類來說有快速、中等和低速幾種。


倉庫管理流程控制系統中的領域功能使用這些信息來決定三個問題:

  • 要存放物品的目標位置是什麽?

  • 從當前位置到目標位置的中間步驟有哪些?

  • 每一步驟用來傳輸物品的傳輸設施是什麽?

例如,只存儲一小段時間就快速取出的物品屬於吞吐量類的快速類,這時應當將物品只存放在快速類的存儲單元中。類似地,具有某種有害性質(如易燃性的物品),則應當由適合傳輸易燃 物的傳輸設施來傳送。


某一特定存儲單元、傳輸設施以及物品的存儲組織標準通常很少隨時間變化,除非是對倉庫進行現代化改造。在正常的倉庫運行中它們通常都是固定不變的,一旦確定了特定存儲單元、傳輸設施或物品,則存儲組織標準就只能由相應的管理功能來顯式地調整。


如何減少無謂的資源消耗?


在倉庫管理流程控制系統的具體安裝中,維護這些數最龐大的存儲組織標準就產生了一個問題。將每一個存儲單元、傳輸設施和帶有私有的相關存儲組織標準集合的物品聯系起來需要大量的內存,比如,有的倉庫可能會有超過一百萬個箱子。此外,因為許多倉庫拓撲元件共享相同的存儲組織標準,這會“浪費”很多內存。但是,為了確保倉庫操作正確,又必須使得它們中的每一個都與一個良好定義的存儲組織標準集合聯系起來。


問題:怎樣才能為倉庫中的每個存儲單元、傳輸設施以及物品提供相應的存儲組織標準列表,而避免消耗巨大的內存呢?


對策:可以將存儲組織標準采用恒值(Immutable Value)解決方案來實現,從而在倉庫拓撲的多個元件之間共享。


解決方案:在多線程環境中共享和狀態改變的問題會成倍的增加。因此,定義一個值對象,使其實例是不可改變的。值對象的內部狀態是在創建時設定的,並且不允許後續改變,如下圖示。


技術分享

沒有任何狀態改變意味著不需要同步。這本身就決定了 Immutable Value 是線程安全的,而且因為沒有加鎖機制,也意味著它在多線程環境中的使用是高效的。


在倉庫拓撲中 SOC 設計


在具體的倉庫拓撲存儲組織標準(Storage Organization Criteria ,SOC)設計中, 每個存儲單元、傳輸設施和物品都維護著一份不變的存儲組織標準集,這是在具體的倉庫配置時指定的。在這個設計中這個集合由組合結構的根類(Storage 類)維護,如下圖所示。


技術分享

一個 Immutable Value 可以由不同的存儲單元、傳輸設施以及物品共享,甚至多個控制線程也可以共享同一個 Immutable Value。此外, 倉庫管理流程控制系統中的領域功能不允許修改Immutable Value,而只能通過相應的管理功能來顯式改變。


本文出自 “中科院計算所培訓” 博客,謝絕轉載!

如何減少無謂的資源消耗?如何在倉庫拓撲中進行 SOC 設計?