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

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


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


倉庫管理流程控制系統中的領域功能使用這些資訊來決定三個問題:
要存放物品的目標位置是什麼?
從當前位置到目標位置的中間步驟有哪些?
每一步驟用來傳輸物品的傳輸設施是什麼?
例如,只儲存一小段時間就快速取出的物品屬於吞吐量類的快速類,這時應當將物品只存放在快速類的儲存單元中。類似地,具有某種有害性質(如易燃性的物品),則應當由適合傳輸易燃   物的傳輸設施來傳送。


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


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


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


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


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


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


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


在倉庫拓撲中 SOC 設計


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



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



相關文章