2016-05-13 54 views
0

我想將一個特定的文件夾結構從一個Alfresco實例複製到另一個實例。用於複製文件夾結構多線程的CMIS訪問者模式?

該文件夾結構包含大量的應該移動的數據,但只有這個數據不會超過30天。

我想實現一個訪問模式的Java工具,它遍歷文件夾結構。如果訪問節點,我會鎖定節點並繼續前進,如果未訪問,我會將該節點複製到另一個實例。

這是一個好主意,還是有人有其他的想法,或試驗?

問候 Kaffi

+1

首先你爲什麼要'複製'到另一個實例。難道你不能只是創建一個新的內容存儲在你存儲它,所以它仍然在同一個Alfresco? –

+0

問題是我們需要複製不超過1個月的數據。因此,經典的方式不是一種選擇... – Kaffi

回答

1

CMIS不知道如何鎖定一個文件夾節點。它只知道如何結帳文件。

如果使用cmis:objectId作爲鍵並將路徑作爲值,那麼對於符合條件的文件夾,將鍵值對寫入鍵值存儲區(如redis)將會怎樣。由於您的評論認爲您的結構非常龐大,並且您可能有多個遍歷層次結構的進程查找符合您的條件的文件夾節點,因此我提議類似於redis而不是像hashmap這樣的內存結構。

然後,您可以從鍵值存儲中讀取一個或多個「消費者」進程,併爲其找到的每個對象進行讀取,使用該路徑在目標回購中重新創建文件夾結構。

+0

親愛的傑夫 很榮幸你回答我的問題。你的想法聽起來很有趣。 如果父文件夾不存在,是否可以使用CMIS創建整個文件夾結構?如果Redis中的訂單沒有明確定義? – Kaffi

+0

我忘了提及我還需要在複製的節點上應用方面。如果設置了特定條件。 – Kaffi

+0

這不是問題。您可以在創建節點時添加方面。 CMIS 1.1原生支持方面,但在CMIS中它們被稱爲「次要類型」。另外,您可以看到的另一個工具來滿足這一要求,即使用camel-cmis組件的Apache Camel。 –

相關問題